2016-04-17 4 views
0

私は2つのテーブルを持っています.1つはユーザと呼ばれ、もう1つは単一のmysqlデータベース内のメッセージです。単純なSQLクエリでは、対応する必要な値が返されません

メッセージと名前を選択して2人のユーザー間に「スレッド」を作成しようとしていますが、送信者とユーザーIDを追加してください。

ユーザー次のようになります。

_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

は、結合を使用しようとすると、メッセージからのこのようなものは、「勝ったmessages.user_id = user.user_id WHERE ... –

答えて

0

あなたがユーザーをフィルタするために行を追加する必要があります

AND users.user_id in ($userID, $senderID) 
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); 

これはテストされていませんが、本質的には「結合」キーワードを使用する必要があります。

+0

ONユーザーを登録しようt仕事 –

+0

これからSQLエラーが発生します。 –

関連する問題