2017-10-22 13 views
1

チャットアプリケーション用のテーブルがノードjsに2つあります。シンプルなSQL一度に2つのテーブルからデータを選択するクエリ

TABLE ユーザー

 - id (PK, AI) 
     - username 
     - useremail 
     - userpass 

TABLE メッセージ:ユーザーがログインして得るとき、私は現在にメッセージを送った人々のユーザ名を取得したい

 - mess_id (PK, AI) 
     - mess_to (FK - users.id) 
     - mess_from (FK - users.id) 
     - mess_txt 
     - timestamp 

現在のユーザーがメッセージを送信したユーザーを示します。私がこれまで試してみました

クエリは上記のクエリは、彼がメッセージを送ったり、彼がメッセージを受信した各分野から、現在のユーザーのユーザー名を返します

SELECT username FROM users JOIN messages ON users.id = messages.mess_to OR users.id = messages.mess_from WHERE users.id = 1

で、私が望むのは、メッセージを送信したユーザーの名前と、このユーザーからのメッセージを受け取ったユーザーの名前を取得することです。

答えて

1

私は、現在のユーザーと会話していたユーザーのIDを取得するにはUNIONのサブクエリを使用します。次に、usersテーブルに参加します。

select u.* 
from (
    select mess_to as user_id from messages where mess_from = 1 
    union 
    select mess_from as user_id from messages where mess_to = 1 
) sub 
join users u on u.id = sub.user_id 
+0

ありがとう、私のために働いた! – Nadeem

関連する問題