Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JSSUG(Japan SQL Server User Group):第4回 SQL Serv...
Search
masaru1006
March 20, 2018
Technology
0
500
JSSUG(Japan SQL Server User Group):第4回 SQL Server 2017勉強会
JSSUG(Japan SQL Server User Group):第4回 SQL Server 2017勉強会の資料
masaru1006
March 20, 2018
Tweet
Share
More Decks by masaru1006
See All by masaru1006
JSSUG(Japan SQL Server User Group):第8回 SQL Server 2017勉強会
masaru1006
0
800
JSSUG(Japan SQL Server User Group):第5回 SQL Server 2017勉強会
masaru1006
0
1.2k
JSSUG(Japan SQL Server User Group):第2回 SQL Server 2017勉強会
masaru1006
0
440
Other Decks in Technology
See All in Technology
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
820
AI エージェントと考え直すデータ基盤
na0
20
7.9k
ソフトウェアテストのAI活用_ver1.25
fumisuke
1
610
助けて! XからWaylandに移行しないと新しいGNOMEが使えなくなっちゃう 2025-07-12
nobutomurata
2
200
SRE with AI:実践から学ぶ、運用課題解決と未来への展望
yoshiiryo1
0
320
本当にわかりやすいAIエージェント入門
segavvy
1
400
AIでテストプロセス自動化に挑戦する
sakatakazunori
1
530
三視点LLMによる複数観点レビュー
mhlyc
0
230
Amazon SNSサブスクリプションの誤解除を防ぐ
y_sakata
3
190
「現場で活躍するAIエージェント」を実現するチームと開発プロセス
tkikuchi1002
3
350
CDK Vibe Coding Fes
tomoki10
1
630
伴走から自律へ: 形式知へと導くSREイネーブリングによる プロダクトチームの信頼性オーナーシップ向上 / SRE NEXT 2025
visional_engineering_and_design
3
460
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Embracing the Ebb and Flow
colly
86
4.8k
Navigating Team Friction
lara
187
15k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Invisible Side of Design
smashingmag
301
51k
Speed Design
sergeychernyshev
32
1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
KATA
mclloyd
30
14k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Rails Girls Zürich Keynote
gr2m
95
14k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Balancing Empowerment & Direction
lara
1
450
Transcript
第4回 SQL Server 2017勉強会 -SQLの結合の種類について- 開催日:2018年03月17日 主催:JSSUG(Japan SQL Server User
Group) 2018/03/17 JSSUG(Japan SQL Server User Group) 1
本日の発表の流れ 1.SQLの結合の種類について 1.1.INNER JOIN(内部結合) 1.2.LEFT OUTER JOIN(左外部結合) 1.3.RIGHT OUTER JOIN(右外部結合)
1.4.FULL OUTER JOINT(完全外部結合) 1.5.CROSS JOIN(クロス結合) 1.6.NATURAL JOIN(自然結合) 1.7.UNION(和結合) 1.8.CROSS APPLY、OUTER APPLY 2018/03/17 JSSUG(Japan SQL Server User Group) 2
SQLの結合の種類について 2018/03/17 JSSUG(Japan SQL Server User Group) 3
はじめに デモを交えながら、各結合の方式を見ていきます。 2018/03/17 JSSUG(Japan SQL Server User Group) 4
INNER JOIN(内部結合) 指定した条件が、結合する両方のテーブルにマッチするレコードのみを返す。 ベン図で描くと、以下の通り。 SQL Serverでは、USINGは使えない。 2018/03/17
JSSUG(Japan SQL Server User Group) 5 左 テーブル 右 テーブル
LEFT OUTER JOIN(左外部結合) 結合の左側のテーブルの全レコードと、指定した条件がマッチする右側のレコードのみを返す。 ベン図で描くと、以下の通り。 2018/03/17 JSSUG(Japan SQL
Server User Group) 6 左 テーブル 右 テーブル
RIGHT OUTER JOIN(右外部結合) 結合の右側のテーブルの全レコードと、指定した条件がマッチする左側のレコードのみを返す。 ベン図で描くと、以下の通り。 2018/03/17 JSSUG(Japan SQL
Server User Group) 7
FULL OUTER JOIN (完全外部結合) 指定した条件がマッチするレコードに加えて、マッチしない左右の両方のテーブルのレコードも 返す。 ベン図で描くと、以下の通り。 2018/03/17
JSSUG(Japan SQL Server User Group) 8
CROSS JOIN(クロス結合) 左右両方のテーブルの全てのコンビネーションの行を返す。 結果で得られるレコード数は、[左のテーブルのレコード数] x [右のテーブルのレコード数] に なる。
2018/03/17 JSSUG(Japan SQL Server User Group) 9
NATURAL JOIN(自然結合) NATURAL JOIN の前後で指定されたテーブルの同じ名前のカラムの値を比較し、値が一 致する行を出力する。 INNER JOINだけでなく、LEFT
OUTER、RIGHT OUTER、FULL OUTERも可能。 SQL Serverでは、NATURAL JOINは使えない。 2018/03/17 JSSUG(Japan SQL Server User Group) 10
UNION(和結合) 指定されたテーブルの行を、まとめて表示。 ALLを付けない場合は、重複が排除される。 ALLを付けた場合は、重複が排除されない。 2018/03/17 JSSUG(Japan SQL
Server User Group) 11
CROSS APPLY、OUTER APPLY(1) クエリの外部テーブル式によって返される行毎にテーブル値関数を呼び出すことが出来る。 テーブル値関数は右入力として機能し、外部テーブル式は左入力として機能する。 左入力からの行ごとに右入力が評価され、生成された行の組み合わせが最終的な出力に使用される。
APPLY操作によって生成される列のリストは、左入力の列のセットでとなる。その後には、右入力によって返さ れた列のリストが続く。 APPLY には、CROSS APPLYとOUTER APPLYという2 つの形式が有る。 CROSS APPLYでは、外部テーブルの行のうち、テーブル値関数から結果セットを生成する行のみが返され る。 OUTER APPLYでは、結果セットを生成する行と生成しない行の両方が返される。そのとき、テーブル値関 数によって生成される列には NULL 値が設定される。 ※参考URL:<https://technet.microsoft.com/ja- jp/library/ms175156(v=sql.105).aspx> 2018/03/17 JSSUG(Japan SQL Server User Group) 12
CROSS APPLY、OUTER APPLY(2) 簡単に言うと。 左側に指定したテーブルの各行に対して、関数(ファンクション)を呼び出す事が出来 る。 左側に指定したテーブルの各行に対して、サブクエリを指定する事が出来る。
OUTER APPLYは、右側の戻り値がNULLになる場合も、左側の値が取得される。 (LEFT OUTER JOINの様な感じ。) 2018/03/17 JSSUG(Japan SQL Server User Group) 13
CROSS APPLY、OUTER APPLY(3) 使いどころ。 左側の1行に対して、右側の関数は複数行を返しても良い。 CASE式を使う場合に、SQLをシンプルに記載可能。
動作は分かったが、使いどころは、イマイチ、ピンと来ず。 何か、ご意見有りましたら、頂きたく…(^^;) 2018/03/17 JSSUG(Japan SQL Server User Group) 14
終わりに 2018/03/17 JSSUG(Japan SQL Server User Group) 15
終わりに 皆さん、ご清聴、ありがとうございました。 検証すると、色々と疑問が解けて有意義です! 2018/03/17 JSSUG(Japan SQL Server User
Group) 16
参考URL http://asai-atsushi.blog.so-net.ne.jp/2016-04-25 http://engineersideline.com/sqlリファレンス/テーブルの結合/cross-join-自然結 合-指定結合-union-join/ http://sql55.com/t-sql/t-sql-join-1.php https://qiita.com/chocolamint/items/4bdbcf80977fac9c301b
http://asai-atsushi.blog.so-net.ne.jp/2016-03-21 http://dcx.sap.com/1201/ja/dbusage/apply-joins-joinsasp.html 2018/03/17 JSSUG(Japan SQL Server User Group) 17