0

私は最近いくつかの結果を引き出しようとしましたが、それを行うための正しいクエリを見つけるのに苦労していました。私が見たすべての例と私のMySQLの本のショーでさえ、次のように結合します。

SELECT * 
FROM table_1
LEFT JOIN table_2 LEFT OUTER JOIN table_3 LEFT JOIN table_2
ON table_1.id = table_2.rel_id
AND table_1.id = table_3.rel_id
AND table_3.id = table_2.rel_id
WHERE table_1.some_col = some_vale;

これは機能せず、代わりに、解決策は次のようになりました。

SELECT *
FROM table_1
LEFT JOIN table_2 ON table_1.id = table_2.rel_id
LEFT OUTER JOIN table_3 ON table_1.id = table_3.rel_id
LEFT JOIN table_2 ON table_3.id = table_2.rel_id
WHERE table_1.some_col = some_value;

SELECTこれら2つのステートメントの違いは何ですか?それぞれをいつ使用する必要がありますか?どのように

結合がどのように機能するかを決定しますか?

4

2 に答える 2

0

あなたは読む必要がありますMYSQL JOIN Syntax

基本構文

     SELECT * FROM first_table ft  
     (LEFT | RIGHT )JOIN second_table st ON st.column = ft.column
     (LEFT | RIGHT )JOIN third_table tt ON tt.column = ft.column (OR st.column)
     WHERE 

注:デフォルトのJOININNER JOIN です。または、以下の構文を使用することもできます

SELECT * FROM t1 LEFT JOIN (t2, t3, t4)
                 ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
于 2012-04-05T08:33:31.170 に答える
0

table_2をある名前で2回結合し、最初は条件なしで結合したため、最初のステートメントは機能しませんでした。mysqlの左外部結合は、完全に同等の左結合です。最終的に最初のステートメントは完全に正しくありません。

テーブルを結合するときは、「ON」句を使用するか、WHERE句で結合条件を記述する必要があります。1つのテーブルを2回結合する場合は、「left join table_2 as t2 left jointable_2ast22」のようにエイリアスを追加する必要があります。

とにかくドキュメントはあなたを助けます:)

mysqlselectステートメント

于 2012-04-05T08:10:31.620 に答える