2009-07-09 7 views
3

外部結合は開発者の分析にのみ使用されますか?関係のない2つ以上のテーブルにデータを含めるか、選択基準に「適合しない」ためにユースケースを見つけるのが難しいです。SQLの外部結合の目的(またはユースケース)は何ですか?

+3

ほとんどのレスポンスはLEFT OUTER JOINについて話していますが、これは最も一般的なものです。 http://en.wikipedia.org/wiki/Join_(SQL)#Outer_joinsの代わりにwikiを読むようにしてください。 –

答えて

15

例として、すべての顧客とその購入を示すレポートを作成するケースがあります。つまり、何も購入していない顧客でも表示されます。顧客と購入の通常の参加を行う場合、レポートには少なくとも1回の購入がある顧客のみが表示されます。

+0

2つの表に存在する列のすべての行を取得する場合は、外部結合を使用する方法が唯一の方法です。 –

+1

私が説明したユースケースは、通常、左外部結合として実行され、左側のテーブル(顧客)からすべての行を取得し、右側(購入)から一致する行を取得します。 BOTH表のすべての行が結果に表示されるようにするには、完全外部結合を使用します。 –

3

「一致しません」という場合は、オプションのデータに便利です。いくつかの行には存在しますが、他の行には存在しません。

+1

なぜdownvote?これは正確ではありませんか? –

1

ユーザーがアドレスを入力しないか、複数の住所(出荷、通行、郵便など)を持つ可能性があるため、おそらくユーザーテーブルとそのア​​ドレステーブルがあります。すべてのユーザーをリストするだけでなく、それらのアドレスを表示する場合は、アドレステーブルの外部結合を使用する必要があります。

1

ユーザーには2つのテーブルがあり、資格などには1つのテーブルがあるとします。すべてのユーザーに資格がある場合はその資格を取得するクエリを実行するとします。この場合、外部結合を使用してすべてのユーザーを戻し、資格を持つユーザーを取得します。内部結合は、資格を持っているユーザーのみを提供します。

1

外部結合と内部結合の違いは、主に、結合述語が一致するかどうかに関わらず、外部結合が両方の結合表の各レコードを保持することです。だから、ユースケースは "欠けているもの"について知ることを中心に回る必要があります。購入していない顧客、または個人的な情報が不足しているメンバー。外側について

4

ここで彼は、視覚的に参加するSQLの新しい表現を示しJeff Atwood - A Visual Explanation of SQL Joinsほかならによって例の非常に良いリストです。

+0

+1 @シャディ・アルモスリ画像は1000語分の価値があります。特にあなたがセットとSennoleのVennダイアグラムに注意を払わなかった場合:) – TheVillageIdiot

2

OUTER JOINは、セカンダリテーブルに格納されている関連レコードがある場合とない場合がある、プライマリテーブルからレコードセットを選択する場合に対応します。

INNER結合では、セカンダリ・テーブルにも表示されていないプライマリ・レコードはすべてリストから除外されます。 OUTER JOINは、すべての有資格の主要レコードの可視性を保証します。

関連する問題