Mysql 连接3个不同的键,因为它们';重新设置
我有这些桌子:Mysql 连接3个不同的键,因为它们';重新设置,mysql,sql,join,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 在表格设置中,某些值可以是1、2、3、4、5、6或7 设置表中的一些条目根据其船队id或组织id链接到船舶
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
在表格设置中,某些值可以是1、2、3、4、5、6或7
设置
表中的一些条目根据其船队id
或组织id
链接到船舶id
如何为船舶
选择设置,如果船舶通过其船队id
或组织id
进行设置?当使用特定列关联表时,可以使用各种类型的联接来连接表并获取数据。有一个关于连接语法的页面。是一个有一些例子的网站
以下查询使用内部联接:
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;
我注意到设置表中有一个Vesser_id,它对于Vessers表来说就像一个FK。如果您希望使用此列,只需将ON条件更改为ON v.ID=s.vessel_ID
什么?示例数据和期望的结果将使这个问题更加清楚。如果组织id
、船队id
和船舶id
在设置中有记录,我如何扩展此查询以不提供双重记录?您可以使用DISTINCT或收紧联接条件。你能把你的数据和预期的结果公布出来吗?