在设置时加入3个不同的键

时间:2014-05-21 12:11:01

标签: mysql sql join

我有这些表格:

TABLE vessels
ID int PK
organization_id int FK
fleet_id int FK
name VARCHAR

TABLE settings
ID int PK
organization_id int NULL FK
fleet_id int NULL FK
vessel_id int NULL FK
some_value INT

在表格设置中,some_value可以是1,2,3,4,5,6或7

settings表中的某些条目基于vessel_idfleet_id

链接到organization_id

如果船只通过vesselfleet_id进行设置,如何选择organization_id的设置?

1 个答案:

答案 0 :(得分:1)

当使用特定列关联表时,可以使用各种类型的JOIN来连接表并获取数据。 MySQL Reference Manual有一个关于JOIN语法的页面。 Here是一个包含一些示例的网站。

以下查询使用INNER JOIN:

SELECT
    v.ID
    ,v.organization_id
    ,v.fleet_id
    ,v.name
    ,s.some_value
FROM vessels v
INNER JOIN settings s
ON v.fleet_id = s.fleet_id OR v.organization_id = s.organization_id
ORDER BY v.name;

我注意到设置表有vessel_id,看起来像船只表的FK。如果您想使用此列,只需将ON条件更改为ON v.ID = s.vessel_id