sql表链接不适用于三个表

du7egjpx  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(331)

我想将三个不同的sql表(users、details和system)链接在一起,并使用以下查询打印结果:

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

但是,它只正确地打印用户和系统信息,而不正确地显示details列—它只是重复其中的一个列。如何成功地将三个表链接在一起?因为目前只有两个连接

2vuwiymt

2vuwiymt1#

也许您选择的ID命名只是混淆(不清楚是否 system.id 以及 details.ID 两者都指 users.user_id 但看起来您没有在正确的键上连接表。
为了联接(链接)表,每个表都需要一个私钥(id)和一个外键(要联接的表的id)。
假设您的表具有以下架构:
用户(id、电子邮件等)
系统(id、用户id、日期、时间、表格布局)
详细信息(id、用户id、聚会大小、饮食等)
你可以加入他们

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;
jexiocij

jexiocij2#

最好使用显式联接。

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

相关问题