我有两个表,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) {}
非常感谢任何帮助。
答案 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