SQL表链接不适用于三个表

时间:2018-01-06 12:33:44

标签: mysql sql-server

我想将三个不同的SQL表链接在一起(用户,详细信息和系统),并使用此查询打印结果:

SELECT 
    users.user_id, users.user_email, system.date, system.time, 
    system.table_layout, details.party_size, details.children_no, 
    details.diets, details.occassion, details.more
FROM 
    users, system, details
WHERE 
    users.user_id = system.id = details.ID
ORDER BY 
    users.user_id

但是,它只能正确打印用户和系统信息,并且不会正确显示详细信息列 - 它只是重复它内部的一列。 如何将三个表成功链接在一起?目前只有两个连接

2 个答案:

答案 0 :(得分:-1)

最好使用显式连接。

SELECT users.user_id, users.user_email, system.date, system.time, system.table_layout, details.party_size, details.children_no, details.diets, details.occassion, details.more
FROM users
Join system  on users.user_id = system.id
Join details on system.id = details.ID
ORDER BY users.user_id

答案 1 :(得分:-1)

也许你选择为id命名只是令人困惑(不清楚是否 system.iddetails.ID同时指代users.user_id,但看起来您没有在正确的密钥上加入表格。

为了加入(链接)表格,每个表格都需要私钥(id)和外键(您要加入的表的ID)。

假设您的表格具有以下架构:
用户( id ,电子邮件,...)
系统(ID, user_id ,日期,时间,table_layout)
详细信息(ID, user_id ,party_size,饮食......)

您可以加入

SELECT *
FROM users, system, details
WHERE users.id = system.user_id AND users.id = details.user_id
ORDER BY users.user_id;

或者像内部联接一样,就像John Cappelletti建议的那样:

SELECT *
FROM users
JOIN system ON users.id = system.user_id
JOIN details ON users.id = details.user_id
WHERE users.id = system.user_id AND users.id = details.user_id
ORDER BY users.user_id;