2012-04-18 21 views
0

表A、B、C3つのテーブルを持つMYSQL JOINS

これらの3つのテーブルを結合するクエリを作成するにはどうすればよいですか。条件はTable Aにレコードが必要です。

私は私のクエリはTable Cレコードが欠落している場合には動作しません。この

select * from a 
left join b on a.article_id = b.article_id 
left join c on b.file_id = c.submission_id 
where c.user_id = 6; 

のように試してみました。その場合、3つのテーブルに対して結合は機能しません。

答えて

2

外部テーブルの基準はWHERE句ではなく、関連するON句でなければなりません。例えば

は:

select * from a 
left join b on a.article_id = b.article_id 
left join c on b.file_id = c.submission_id and c.user_id = 6; 
+0

私はこれが彼の望むものだと思います。質問はすべてではありませんでした:] – Konerak

+0

申し訳ありませんが、問題は私のアプローチでした。私は問題を修正しました。 – SupaOden

+0

@Konerak、WHERE句の欠如int eh最終的なクエリは少し不審ですが、これは私の経験上、これは私がmysqlの質問に見られる最も一般的な問題であるため安全な答えだと思いました。 –

1

あなたがLEFT JOINを使用する場合は、abからレコードがテーブルc内に対応するレコードがない場合でも、選択されています。代わりにINNER JOINを使用してください:

SELECT * FROM a 
INNER JOIN b ON a.article_id = b.article_id 
INNER JOIN c ON b.file_id = c.submission_id 
WHERE c.user_id = 6; 
+0

私はこれを試しましたが、テーブルCに一致がない場合、レコードは表示されません。 – SupaOden

+0

'条件は、テーブルAにレコード' – Konerak

+0

@asdgfassagasが必要なものを決定する必要があります。とにかく 'a'から**すべての**レコードを必要としますか、対応するレコードがある場合は' b'と 'c'から記録しますか?その後、Ikeの答えを使用します。 –