我有两个表,一个叫做用户,另一个是单个mysql数据库中的消息。
我正在尝试制作一个"线程"通过选择消息和名称以及发件人/用户ID来获取2个用户之间的额外信息。
用户看起来与此相似:
_id, Name
1 Mike
2 Chris
3 Agnes
.. ....
消息类似于:
_id, sent_id, user_id, message
1 1 2 Hello
2 2 1 Sup
3 3 2 Goodbye
.. ...
目前的查询是:
SELECT users.name, messages.message, messages.user_id as user, messages.sent_id as sender
FROM messages, users
WHERE users.user_id = messages.user_id
AND (messages.user_id = $senderID AND messages.sent_id = $userID)
OR (messages.user_id = $userID AND messages.sent_id = $senderID);
它发挥作用,因为它发送正确的消息;但是,它返回所有用户名,而不是与消息关联的用户名。
答案 0 :(得分:0)
SELECT users.name, messages.message, messages.user_id as user, messages.sent_id as sender
FROM messages join users
WHERE users.user_id = messages.user_id
AND (messages.user_id = $senderID AND messages.sent_id = $userID)
OR (messages.user_id = $userID AND messages.sent_id = $senderID);
未经测试,但实质是你必须使用“join”关键字。
答案 1 :(得分:0)
您需要添加一行来过滤用户:
AND users.user_id in ($userID, $senderID)