简单的SQL查询不返回所需的相应值

时间:2016-04-17 20:19:10

标签: mysql sql

我有两个表,一个叫做用户,另一个是单个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); 

它发挥作用,因为它发送正确的消息;但是,它返回所有用户名,而不是与消息关联的用户名。

2 个答案:

答案 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)