#author("2023-05-02T17:13:58+09:00","","")
#author("2023-05-02T17:16:45+09:00","","")
#navi(../)
* サブクエリ結果同士をLEFT JOINしてみる [#p482eb2f]
本資料は、クエリ結果を別のクエリ結果とLEFT JOINするサンプル構文を以下に記します。~
クエリ結果にNULLレコードを追加するLEFT JOINサンプルとなります。

#contents

* 動作確認環境 [#gf1c8cf4]
 SELECT @@VERSION
 Microsoft SQL Server 2019 (RTM-GDR) (KB5021125) - 15.0.2101.7 (X64)   Jan 23 2023 13:08:05   Copyright (C) 2019 Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19045: ) 

* テストテーブルおよびテストデータ [#fa249588]
以下のテストテーブルとテストデータで動作確認を行いました。

 CREATE TABLE m1
 (
 	 id int
 	,ostype varchar(20)
 	,live bit
 )
 CREATE TABLE m1
 (
 	 id int
 	,ostype varchar(20)
 	,live bit
 )

 CREATE TABLE t1
 (
 	 id int
 	,PCs int
 )
 
 INSERT INTO m1
 VALUES
  (1,'Symbian',0)
 ,(2,'NeXTSTEP',0)
 ,(3,'OS/2',0)
 ,(4,'BeOS',0)
 ,(5,'Windows',1)
 ,(6,'macOS',1)
 ,(7,'Linux',1)
 ,(8,'iOS',1)
 ,(9,'Android',1)
 ,(10,'FreeBSD',1)
 
 INSERT INTO t1
 VALUES
  (5,100)
 ,(6,10)
 ,(7,1)
 CREATE TABLE t1
 (
 	 id int
 	,PCs int
 )

 INSERT INTO m1
 VALUES
  (1,'Symbian',0)
 ,(2,'NeXTSTEP',0)
 ,(3,'OS/2',0)
 ,(4,'BeOS',0)
 ,(5,'Windows',1)
 ,(6,'macOS',1)
 ,(7,'Linux',1)
 ,(8,'iOS',1)
 ,(9,'Android',1)
 ,(10,'FreeBSD',1)

 INSERT INTO t1
 VALUES
  (5,100)
 ,(6,10)
 ,(7,1)

* サブクエリとサブクエリのLEFT JOIN [#p1fb6cbd]
2つのテーブルをLEFT JOINする場合は以下のようになります。

** テーブル同士をLEFT JOINした場合 [#yfc25963]
以下、m1(マスタ)とt1を LEFT JOIN し場合のSQLとなります。

 SELECT
 	 m1.id
 	,m1.ostype
 	,t1.PCs
 FROM
     m1
 	LEFT JOIN t1 on m1.id = t1.id

実行結果
|id|ostype|PCs|h
|1|Symbian|NULL|
|2|NeXTSTEP|NULL|
|3|OS/2|NULL|
|4|BeOS|NULL|
|5|Windows|100|
|6|macOS|10|
|7|Linux|1|
|8|iOS|NULL|
|9|Android|NULL|
|10|FreeBSD|NULL|

** 両方のテーブルをクエリしLEFT JOIN する [#sda235c0]
上記のSQLのSQL の m1とt1部分をサブクエリにします。

 SELECT
 	 M.id
 	,M.ostype
 	,T.PCs
 FROM
     (SELECT * FROM m1 WHERE live = 1) M
 	LEFT JOIN 
 		(SELECT * FROM t1 WHERE PCs >= 10) T
 	ON M.id = T.id

m1とt2部分をサブクエリにし、MとTとして別名を設定しています。

実行結果
|id|ostype|PCs|h
|5|Windows|100|
|6|macOS|10|
|7|Linux|NULL|
|8|iOS|NULL|
|9|Android|NULL|
|10|FreeBSD|NULL|

以上、サブクエリ同士をLEFT JOIN するサンプル記事でした。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS