最大の難関“表の結合”は関連付けに注目するさらっと覚えるSQL&T-SQL入門(6)(3/3 ページ)

» 2007年07月25日 00時00分 公開
[石橋潤一株式会社システムインテグレータ]
前のページへ 1|2|3       

OUTER JOINによる外部結合

 外部結合は内部結合の結果に対し、結合する2つのテーブルのうち、一方のテーブルに含まれるデータをすべて取得します。

 外部結合の構文は次のような形です。

SELECT 列名 FROM テーブル1

[LEFT or RIGHT] OUTER JOIN テーブル2 ON 結合条件


 「OUTER JOIN」は外部結合であることを示し、LEFTもしくはRIGHT句にて、結合するどちらのテーブルのデータを全件表示対象とするか指定します。LEFTを使う場合は左外部結合、RIGHTの場合は右外部結合と呼びます。

 外部結合は実際の動きを確認すると理解しやすいので、早速サンプルを取り上げます。

SELECT  PD.ProductID,
        PD.Name AS 商品名,
        PD.ProductSubcategoryID, 
        PS.Name AS サブカテゴリ名
FROM    Production.Product AS PD LEFT OUTER JOIN
        Production.ProductSubcategory AS PS
ON      PD.ProductSubcategoryID = 
        PS.ProductSubcategoryID
 
結果
ProductID  商品名               ProductSubcategoryID  サブカテゴリ
---------- ------------------- --------------------- ------------
1          Adjustable Raceaaa  NULL                  NULL
2          Bearing Ball        NULL                  NULL
…中略…
998        Road-750 Black, 48  2                     Road Bikes
999        Road-750 Black, 52  2                     Road Bikes

 このサンプルでは、左外部結合を利用し、結合条件に一致するデータに加えて、商品マスタのデータをすべて表示しています。内部結合では表示されなかった商品データが表示されている点に注目してください。サンプルで示した結果では1〜2行目が該当し商品マスタの内容がそのまま出力されています。ただし、「ProductSubcategoryID」はNULLであるためサブカテゴリマスタとの結合は行えず、サブカテゴリマスタより取得するサブカテゴリ名がNULLとなります。

 サンプルのLEFTをRIGHTに置き換え右外部結合とすると、結合条件に一致するデータにサブカテゴリマスタの全件データが加わり表示されます。ただし、サブカテゴリマスタに存在するすべてのコードは商品マスタで指定されているため、右外部結合と内部結合の結果で取得件数に変化はありません。

まとめ

 今回はSELECT文での難関となる結合を取り上げました。内部結合、外部結合でそれぞれどのように結果が異なるか、しっかりと把握しておく必要があります。外部結合では、指定したテーブルの全件を取得できるため、結合条件に左右されることなくデータを得ることができます。一方、内部結合の場合は結合条件に一致するデータのみ取得するため、そのほかにどのようなデータが存在するか知ることができません。また一方で、外部結合では指定したテーブルの全データを取得するため、必要以上のデータを取得してしまう可能性もあります。このように、結合を利用する際にはそれぞれの動作特性を把握し、テーブルの論理的な関連性に合わせて適切に利用する必要があります。

 また、結合の方法には取り上げた内部結合、右・左外部結合以外にも、クロス結合や自己結合といった結合の方法が存在します。これらの利用頻度は低いため連載では取り上げませんでしたが、それぞれ利用価値があるためその利用法を確認しておきましょう。


 次回は複数のSQL文を組み合わせて結果を取得できる「サブクエリ」を取り上げます。お楽しみに!(次回へ続く)

筆者プロフィール

石橋潤一
株式会社システムインテグレータ勤務。Web+DBの業務アプリをメインに開発に携わる。@IT連載記事「SQL Server 2005を使いこなそう」「SQL Server 2005 CTPレビュー」執筆のほか、著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。