我有这些表格:
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_id
或fleet_id
organization_id
如果船只通过vessel
或fleet_id
进行设置,如何选择organization_id
的设置?
答案 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
。