2012-02-26 18 views
0

私はmysql結合を持っています。誰かのために、imageとfirstnameとlastnameの重複フィールドが返されます。それは右に参加していないように。ここでMySQL LEFT JOINが動作しません

SELECT a.follow_id, a.user_id, a.following, b.firstname, b.lastname, c.firstname, c.lastname, b.image, c.image 
FROM followers a 
LEFT JOIN candidates b ON a.following = b.user_id 
LEFT JOIN donors c On a.following = c.user_id 
WHERE a.user_id = 222 
LIMIT 9 

両候補者とドナーが、姓と名とイメージを持っているので、私はこれらのフィールドを取得する必要がありますが、フィールドを重複しないSQLです。

私の結果 enter image description here

誰かが私が間違ってやっているものを私に教えてくださいことはできますか?

ありがとうございます。

+0

私はこの権利をやっていないよ知っている、私に道を示してください! :) –

+0

なぜあなたは 'LIMIT'を使用していますか? –

+0

DISTINCT sillは、重複した列を持つテーブルを返します。 –

答えて

1
SELECT a.follow_id, a.user_id, a.following, b.firstname, b.lastname, b.image 
FROM followers a 
LEFT JOIN candidates b ON a.following = b.user_id 
WHERE a.user_id = 222 


UNION DISTINCT 


SELECT a.follow_id, a.user_id, a.following, c.firstname, c.lastname, c.image 
FROM followers a 
LEFT JOIN donors c On a.following = c.user_id 
WHERE a.user_id = 222 

あなたの問題を正しく理解しているかどうかわかりません。

+0

結果の画像を見る...重複する列 –

+0

私の解決策を試しましたか? –

+0

私はやりましたが、それはuser_idと他のフィールドがNULLの2つの余分な行を返します。なぜ2つの余分な行が返されますか?合計2行のデータしかありません。 –

-1

follow_idfollowingのフィールドは一意です。独自のフィールドを使用して候補テーブルとドナーテーブルに参加するので、各テーブルの関連情報とfollowersテーブルのuser_idを引き出す2つのサブクエリを作成する必要があります。

次に、あなたの各サブクエリにあなたのフォロワーのテーブルから参加することが可能です。

SELECT f.user_id, 
     can.firstname, 
     can.lastname, 
     don.firstname, 
     don.lastname, 
     can.image, 
     don.image 
FROM followers f 
     LEFT JOIN (SELECT a.user_id, 
         a.following, 
         b.firstname, 
         b.lastname, 
         b.image 
        FROM followers a 
         INNER JOIN candidates b 
          ON a.following = b.user_id) can 
     ON f.user_id = can.user_id 
     LEFT JOIN (SELECT a.user_id, 
         a.following, 
         c.firstname, 
         c.lastname, 
         c.image 
        FROM followers a 
         INNER JOIN donors c 
          ON a.following = c.user_id) don 
     ON f.user_id = don.user_id 
WHERE f.user_id = 222 
LIMIT 9; 
関連する問題