2017-08-07 7 views
0

私は2つのテーブルUserとrelationshpを持っています。ログインしたユーザーにフレンドリクエストを送信したすべてのユーザーを探す必要があります。MySQLで特定の結果を返すためのクエリを検索する必要があります

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

これは私の2つのテーブルです。 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

あなたはuser_two_idための2つのINNER JOINあなたのクエリ内の文、user_one_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 = ? 

UPDATED ANSWER: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 
+0

私はクエリを試してみましたが、私は初めてクエリを実行しました。それを試そうとしている。試してくれてありがとう。 – psingh24

+0

OK答えが更新されました。あなたの最初の質問を編集して詳細を追加したことに気付きました。 – dat3450

+1

ありがとう!完璧に動作します! – psingh24

関連する問題