2011-02-02 35 views
1

私はPHPのToDoリストを作成しており、MySQL DBに 'admin_todo'テーブルを持っています。それぞれのtodoアイテムには、 'created_by'と 'completed_by'別のテーブル 'admin_users'に保存します。1つのテーブルで2つの列を結合するMySQL

'created_by'カラムと 'completed_by'カラムを 'admin_users'テーブルの 'username'カラムにリンクさせるためのクエリが必要です。このクエリを作成したユーザのユーザ名をエコーアウトできますtodoとtodoを完了した人。それは簡単なことだと思われるが、これを正しく行うためのクエリを見つけることができない。私は労働組合を使用してみましたが

SELECT admin_todo.*, admin_users.username AS creator 
FROM admin_todo 
LEFT JOIN admin_users ON admin_todo.created_by = admin_users.id 

UNION ALL 

SELECT admin_todo.*, admin_users.username AS completer 
FROM admin_todo 
LEFT JOIN admin_users ON admin_todo.completed_by = admin_users.id 

しかし、悲しいかな、それは「クリエイター」列の下のtodoクリエイターのユーザ名と、二回初めて、すべてのTODO項目を返します。 2回目は、todoコンプリータのユーザー名を使用しますが、「作成者」列の下のALSOも使用します。

答えて

8

これを試してみてください!

SELECT admin_todo.*, au.username AS creator, au2.username AS completer 
FROM admin_todo 
LEFT JOIN admin_users AS au 
    ON admin_todo.created_by = au.id 
LEFT JOIN admin_users AS au2 
    ON admin_todo.completed_by = au2.id 
+0

**は完全に働いた**私はあなたが「something_else」ASテーブルを選択することができます知らなかった、私はそれが列のみのためだと思いました。ありがとう! –

+0

それは人生を楽にします。 – Darren

関連する問題