2016-08-19 7 views
-3

私は3つのテーブル:User_table,Message_tableおよびMessage_table_toを持っています。1つのクエリでユーザー名をダブル選択

User_tableフィールド:

のuser_id

ユーザ名

Message_tableフィールド:

をAUTHOR_ID MESSAGE_IDこれはフィールドのフィールドを持つ

MESSAGE_TEXT

MESSAGE_TIME

Message_table_to:

をMESSAGE_ID

をAUTHOR_ID私はmessage_tableとtからすべてを必要とする

をUSER_ID彼はの名前をauthor_iduser_idから得ています。 1つのクエリでuser_tableの両方からusernamesを取得するにはどうすればよいですか?

注:私は次のクエリを試みた:

$sql = "SELECT u.user_id, u.username, p.message_id, p.message_text,  p.message_time, p.author_id, k.message_id, k.user_id 
    FROM User_table u, Message_table p, Message_table_to k 
    WHERE 
    k.message_id = p.message_id 
    AND p.author_id = u.user_id 
    ORDER BY k.message_id DESC 
LIMIT 5 
    "; 

をしかし、私は唯一のp.author_idのユーザ名とないあなたが二回エイリアスを使用してuser_tableに参加する必要がありk.user_id

答えて

0

からユーザー名を取得送信者と受信者のユーザー名を取得します。また、条件の代わりに明示的な結合を使用するようにクエリを変更しました。

SELECT u1.user_id, u1.username as sender, p.message_id, p.message_text,  p.message_time, p.author_id, k.message_id, k.user_id, u2.username as recipient 
FROM User_table u1 
INNER JOIN Message_table p ON p.author_id = u1.user_id 
INNER JOIN Message_table_to k ON k.message_id = p.message_id 
INNER JOIN User_table u2 ON k.user_id=u2.user_id 
ORDER BY k.message_id DESC 
LIMIT 5 
関連する問題