その7)SQLテクニック 様々な結合

その7)SQLテクニック 様々な結合

この記事を読むのに必要な時間は約 5 分です。

結合

今回のテーマはデータの結合です。

結合と言ってもいろいろな方法があります。まずはベースとなるデータを参照してみましょう。

サンプルでダウンロードしている「AdventureWorksDW2016_EXT」を加工して作った以下のテーブルを利用してみます。

この地域情報のデータと

/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT TOP (1000) [OrganizationName]
,[CurrencyKey]
FROM [AdventureWorksDW2016_EXT].[dbo].[Organization]

 

この通貨名のデータで試してみたいと思います。

/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT TOP (1000) [CurrencyKey]
,[CurrencyName]
FROM [AdventureWorksDW2016_EXT].[dbo].[Currency]

結合の種類

結合には以下のような種類があります。

  1. 内部結合
  2. 完全外部結合
  3. 左側外部結合
  4. 右側外部結合

これらについて解説してきます。

視認性を高めるために以下のような省略形で説明します。

SELECT *  FROM [Currency]      C
SELECT *  FROM [Organization]  O

 

内部結合

内部結合はお互いのデータに存在する物だけを結合し、片方に存在しない物やもう片方に存在しない物は結びつけません。

inner join

SELECT *  FROM 
[Currency]      C
inner join
[Organization]  O
on
C.CurrencyKey=O.Currencykey

Innter join ではお互いのテーブルにデータが存在している物だけを表示させます。

 

完全外部結合

完全外部結合はそれぞれのテーブルに存在しないデータがあったとしても元のデータを残して表示させます。

full outer join

SELECT *  FROM 
[Currency]      C
full outer join
[Organization]  O
on
C.CurrencyKey=O.Currencykey

この例では、通貨情報のテーブルには存在するけど、地域情報のテーブルには存在しないデータについては上記赤丸部分のようにNULLで表示させています。

左側外部結合

左側外部結合は初めに表記したテーブルに対して後から表記したテーブルをぶつけて合致した物を表示させます。この時初めに表記したテーブルについてはすべてのデータを表示させます。逆に後から表記したテーブルで合致しなかった物については表記されません。

left outer join

SELECT *  FROM 
[Currency]      C
left outer join
[Organization]  O
on
C.CurrencyKey=O.Currencykey

この例の場合、たまたま完全外部結合と一致してしまいました。

右側外部結合

右側外部結合は、左側外部結合の左右逆版なので説明は省略します。

right outer join

 

この様に、テーブル同士を結合していき、自分が目的とするデータを取得するのが関係データベースの醍醐味です。

 

 

 

 

タイトルとURLをコピーしました