使用另一个表中的其他列获取一个表的条目

Posted

技术标签:

【中文标题】使用另一个表中的其他列获取一个表的条目【英文标题】:Getting a entry for one table using the other columns in another table 【发布时间】:2021-09-12 18:45:46 【问题描述】:

我对我的数据库设计有些苦恼。请参考此图像以获得清晰的理解。

在 tbo_current_status 表中,有一个 active_status 字段,我想用 tbo_status 中的任何一个字段(status_type_1、status_type_2...等)填充它。我怎样才能做到这一点?

如果您有任何不同的想法,请随时分享:)

【问题讨论】:

数据库设计肯定有问题。在名为tbo_status 的表中,我希望每个状态有一行。通常单独的列来实现一个数组或列表是一个很大的危险信号。当然,您还没有描述您要做什么,因此无法真正回答这个问题。 表 tbo_status 具有每个项目的状态类型,例如 design->tested->prod,而另一个项目可以具有 code->review->deploy。所以我就这样尝试了。 【参考方案1】:

我认为将 tbo_status 设置为 [Project ID]、[Status Type Number] 和 [Status Display Name] 字段可能更容易,然后将每个状态都设置为记录。然后您可以使用状态类型编号作为 tbo_current_status 中的外键。它没有明确强制有 5 种状态,就像您通过将它们设为列所做的那样,但是以您尝试使用它们的方式引用它们更容易。

如果您想强制执行 5 个状态,也许您创建另一个表 tbo_status_type_list,它定义了 5 个数字,并将其作为 tbo_status 表中状态类型编号的外键。

【讨论】:

是的,我认为第一个解释很好,一个快速的问题认为我在 tbo_current_status 中有 [Status Type Number] (作为外键)作为数字 1 。是否可以在 tbo_current_status 中将其更改为数字 2 [Status Type Number](即不同的状态显示名称)? 我认为这不是问题,因为它会从一种状态转移到另一种状态,您可以更新该行的外键值。

以上是关于使用另一个表中的其他列获取一个表的条目的主要内容,如果未能解决你的问题,请参考以下文章

如何获取另一个表中不存在的表的记录?

根据 Redshift 中其他表的条目在表中插入值

从表中选择最新的带时间戳的值,该表对于一个列 id 有多个条目,对于每个唯一的列 id 和来自另一个表的数据

如何从其他表中获取所需的列

用另一个表中的随机条目更新表的列

用于获取表的所有条目并且仅包含基于特定列的许多重复项中的第一个的自定义查询