2013-12-09 16 views
6

2つの異なるテーブル間でコンマまたはジョインを使用する違いは何ですか?そのようなこれらの2つのコードとしてカンマとSQLの結合の違い

:あなたが与えた特定のコードに基づいて

SELECT studentId, tutorId FROM student, tutor; 


SELECT studentId, tutorId FROM student JOIN tutor; 
+0

これらのような「コンマ結合」は古いコードであり、サポートされ続けることは保証されていません。また、読みやすさと柔軟性に欠けます。全体的に、それはちょうど使用することをお勧めしません。 WHERE句が正しくないため、予想よりもはるかに多くの行を取得するのは簡単です。 – Tobberoth

+1

SQL Ansiコンソーシアムは、何十年も暗黙の結合(カンマ)を取り除こうとしています。しかし、多くのレガシーシステムと多くのレガシープログラマが存在し、それは起こりそうもありません。明示的な結合を行うと、コードがより明確になります。 – jean

答えて

4

を指定することが許可されているそれらを実行するときに本当の違いはありませんが、読みやすさがあり、職場での一貫性とエラー緩和問題は:

SELECT col1, col2 
FROM tab1, tab2, tab3,tab4 
WHERE tab1.id=tab2.tab1_id 
AND tab4.id = tab2.tab3_id 
AND tab4.id = tab3.tab4_id; 
01:

あなたがで終わるだろう、あなたはINNER JOINを行うための昔ながらの方法を使用した場合は、4つのテーブル を持っていたと想像します

SELECT col1, col2 
FROM tab1 
INNER JOIN tab2 ON tab1.id = tab2.tab1_id 
INNER JOIN tab3 ON tab3.id = tab2.tab3_id 
INNER JOIN tab4 ON tab4.id = tab3.tab4_id; 

後者はそれがで参加しているまさに右のテーブルの前であなたを示しています。明示的なINNERを使用して

は、それは次のようになり加わります。 ON句を置くことを忘れるのは難しいので、WHEREに別のANDを追加するか、間違った条件を追加するよりも、読みやすさが向上し、エラーが発生しにくくなりました。

また、明示的な記述方法を使用して他のタイプのJOINSを実行している場合は、INNERを別のものに変更するだけでコードが一貫して構築されます。

2

は、はすべてに違いはありません。

しかし、JOINオペレータの構文を使用して、あなたが参加LEFT JOINのをやったときに非常に重要である条件、またはRIGHT JOIN

+0

実際の違いが1つしかない場合、条件節の前にジョインが評価されます。アウトターが悪い結果につながるケースはごくまれです。 – jean

関連する問題