我需要加入表格
我有这个SQL:
SELECT messages_between.*, users.*, status.* FROM messages_between
LEFT JOIN users
ON users.uid = messages_between.user_2
LEFT JOIN status
ON status.uid = messages_between.user_2
WHERE messages_between.user_1 = 123
所以这个查询工作正常,但问题是当我在messages_between
中没有一行时。
uid
是user_1
或user_2
有什么建议吗? 感谢
[编辑]
我的桌子结构:
用户有列:id,name,password,password_s,uid
状态包含列:id,uid,状态[如果他/她在线或离线]
messages_between 包含列:id,user_1,user_2,mid
所以我想展示users.name,status.status,messages_between.user_2,messages_between.mid
答案 0 :(得分:0)
您可以尝试以下查询。当您从连接表中需要null时,则不应在where子句中添加conditiona。您也可以使用null检查或在join子句中添加conditiona。 此外,您还需要更改左连接的顺序,因为您要从users表中检索所有recrods,并在记录和状态记录之间删除缺少的messages_的空值。
SELECT messages_between.*, users.*, status.* FROM messages_between
LEFT JOIN users
ON users.uid = messages_between.user_2 AND messages_between.user_1 = 123
LEFT JOIN status
ON status.uid = messages_between.user_2
答案 1 :(得分:0)
这是你想要的吗?
SELECT messages_between.*, users.*, status.*
FROM users LEFT JOIN
messages_between
ON users.uid = messages_between.user_2 and messages_between.user_1 = 123 LEFT JOIN
status
ON status.uid = users.uid;
这可以保留所有用户,并在"之间有适当的"消息时提供其他信息。