Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连接3个不同的键,因为它们';重新设置_Mysql_Sql_Join - Fatal编程技术网

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或收紧联接条件。你能把你的数据和预期的结果公布出来吗?