2012-01-25 9 views
0

(クエリ内の)FROM句に複数のテーブルを追加すると、結果セットにどのような影響がありますか?最初に最初のテーブルから選択して2番目のテーブルから選択してから、論理和を作成しますか(つまり、行スペースのみが影響を受けるか)、実際には結合のようなことをしますか?また、FROM句で複数のテーブルを使用する場合、WHERE句は両方のサブ結果セットをフィルタリングしますか?n> 1のテーブルを使用するSQL FROM句

+1

マニュアルを参照してください。http://www.postgresql.org/docs/current/static/tutorial-join.html –

+0

このように、基本的に(WHERE句に何も追加しないで)クロスプロダクトですか? –

+0

@WhelhelbeutelKartoffelhuhn正しいです。 – Aaron

答えて

2

FROM句に2つのテーブルを指定すると、JOINが実行されます。その後、WHERE句を使用してJOIN条件を指定できます。あなたがこれをしないと、デカルト製品(2番目のテーブルのすべての行に無差別に結合された最初のテーブルのすべての行)になります。

コードは次のようになります:

SELECT a.*, b.* 
FROM table1 a, table2 b 
WHERE a.id = b.id 

しかし、私はいつも(キーワードに登録しようとして)明示的に私は結合を指定してみてください。それはあなたがやろうとしていることについて(次の開発者のために)豊富に明らかにします。同じJOINですが、明示的に指定されています:

SELECT a.*, b.* 
FROM table1 a 
INNER JOIN table2 b ON b.id = a.id 

ここでWHERE句は必要ありません。また、このメソッドは、ONが明示的に指定されているため、誤ったデカルト積を生成するのを防ぐのに役立ちます(WHERE句を忘れた場合)。

+1

JOINを提唱する+1 –

関連する問題