我想将三个不同的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
但是,它只能正确打印用户和系统信息,并且不会正确显示详细信息列 - 它只是重复它内部的一列。 如何将三个表成功链接在一起?目前只有两个连接
答案 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.id
和details.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;