SQL内部結合を使用した複数の表からのデータの取得

内部結合は、2つ以上のデータベースに表示される情報を返します

内部ジョインは、SQLで最も頻繁に使用されるジョインです。 2つ以上のデータベーステーブルに存在する情報のみを返します。 結合条件によって、どのレコードがペアになり、WHERE句で指定されているかが決まります。 たとえば、車両とドライバーの両方が同じ都市にあるドライバー/車両マッチアップのリストが必要な場合は、次のSQL照会がこのタスクを実行します。

SELECT姓、ファーストネーム、タグFROM drivers、vehicles WHERE drivers.location = vehicles.location

結果は次のとおりです。

ラストネームfirstnameタグ
----------- ------------ ----
ベーカー・ローランドH122JM
スミスマイケルD824HA
スミスマイケルP091YF
ジェイコブス・アブラハムJ291QR
ジェイコブス・アブラハムL990MT

結果は正確に求められているものであることに注意してください。 WHERE句に追加の条件を指定することで、クエリをさらに絞り込むことができます。 元のクエリでは、運転免許が与えられていない車両に運転手が合っていると仮定します(トラック運転手と車の運転者)。 この問題を解決するには、次のクエリを使用します。

SELECT姓、名、タグ、vehicles.class FROMドライバ、車両WHERE drivers.location = vehicles.location AND drivers.class = vehicles.class

この例では、SELECT句のクラス属性のソーステーブルを指定しています。これは、両方のテーブルに表示されるクラスがあいまいであるためです。 このコードでは、通常、クエリの結果に含めるテーブルの列を指定します。 この場合、列は同一であり、equijoinを使用して結合されるため、違いはありません。 ただし、列に異なるデータが含まれている場合は、この区別が重要です。 このクエリの結果を次に示します。

lastname firstnameタグクラス
---------- ------------ ---- ------
ベーカー・ローランドH122JMカー
Smythe Michael D824HAトラック
ジェイコブスアブラハムJ291QR車

行方不明の行はマイケル・スミスと車を、アブラハム・ジェイコブスはトラックに、車両はドライブすることを認められていませんでした。

内部結合を使用して、3つ以上のテーブルのデータを結合することもできます。