需要在MySQL中查找返回某个结果的查询

时间:2017-08-07 01:28:38

标签: javascript mysql node.js

我有两个表,User和relationshp。我需要找到已经向登录用户发送好友请求的所有用户。

User Table                        relationship Table
------------         ----------------------------------------------
id | username         user_one_id | user_two_id | status | action_user_id

那是我的两张桌子。 user_one_id是发送请求的用户,而user_two_id是收件人。

我需要找到一个查询,它将返回登录用户收到的所有好友请求。

如果尝试以下操作,但它只返回登录用户的名称和向其发送请求的用户的ID。没有返回发件人的姓名。

 var loggedInUser = req.user[0];
 connection.query("
 SELECT User.id, User.username, relationship.user_one_id, 
 relationship.status 
 FROM User INNER JOIN relationship ON User.id=relationship.user_one_id 
 WHERE User.id = ?",
 [loggedInUser], function(err, results, fields) {}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要在查询中使用两个INNER JOIN语句,一个用于user_one_id,另一个用于user_two_id

SELECT userA.id, userA.username, userB.id, userB.username, status, action_user_id
FROM relationship
INNER JOIN User AS userA ON userA.id = relationship.user_one_id
INNER JOIN User AS userB ON userB.id = relationship.user_two_id
WHERE userA.id = ?

更新的答案:

请点击此处链接了解详情:http://sqlfiddle.com/#!9/af7ce/5

SELECT userA.id AS userA_id, userA.username AS userA_username, userB.id AS userB_id, userB.username AS userB_username, status, action_user_id, userC.username AS action_user_username
FROM relationship
INNER JOIN User AS userA ON userA.id = relationship.user_one_id
INNER JOIN User AS userB ON userB.id = relationship.user_two_id
INNER JOIN User AS userC ON userC.id = relationship.action_user_id
WHERE (userA.id = 1 OR userB.id = 1) AND userC.id != 1