2012-01-06 14 views
2

フォーラムの投稿のリストをループして、2つのテーブルのデータを引き出します。postsmembersmySql join - 同じテーブルの複数のレコード

私はすべてがうまく動作することをLEFT JOIN

よう

SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id

を使用しています。しかし、私はまた、会員テーブルから別のレコード、すなわちp.lastposterのレコードを引き出す必要があります。どうすればいい?私は既に私がm.nameを引っ張っていて、それを混同しないので、そこに別のJOINを追加できません。

答えて

0

あなたは2つの異なるrowsをしたい場合は、UNION使用することができます:あなたはlastposterから同じrow詳細をしたい場合は、これを行う

SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id 

UNION 

SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.lastposter=m.id 

を:

SELECT m.name, p.title, lp.name AS lastposter 
FROM posts AS p 
LEFT JOIN members AS m ON p.poster=m.id 
LEFT JOIN members AS lp ON p.lastposter = lp.id 
+0

おかげで、私は第二の方法をやったが、私は最後にLIMITを追加したときにエラーを取得しました。私は 'posts'から見つけたレコードを制限したいです – user1022585

+0

ここにはUNION ALLが必要でしょうか? –

+0

@BillyONealそれは依存します:) –

0

私ができます私はすでにm.nameを引っ張っているので、別のJOINをそこに追加することはできません。それを混乱させませんか?

あなたががここに参加したままにしている理由は、私が実際に表示されていない

SELECT m.name, p.title, lastpostMembers.name AS lastpostername FROM posts AS p 
LEFT JOIN members m ON p.poster=m.id 
LEFT JOIN members lastpostMembers ON p.lastposter=lastpostMembers.id 

号;あなたは本当に内的な結合が欲しいようです。

2

あなたは別の異なる別名で参加追加することができます。

SELECT m.name, p.title, lp.name AS lastposter 
FROM posts AS p 
LEFT JOIN members AS m ON p.poster=m.id 
LEFT JOIN members AS lp ON p.lastposter = lp.id 
関連する問題