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
510
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
840
JSSUG(Japan SQL Server User Group):第5回 SQL Server 2017勉強会
masaru1006
0
1.3k
JSSUG(Japan SQL Server User Group):第2回 SQL Server 2017勉強会
masaru1006
0
450
Other Decks in Technology
See All in Technology
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
24
17k
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
2
280
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
0
470
Open Table Format (OTF) が必要になった背景とその機能 (2025.10.28)
simosako
3
610
Data Engineering Guide 2025 #data_summit_findy by @Kazaneya_PR / 20251106
kazaneya
PRO
4
630
GPUをつかってベクトル検索を扱う手法のお話し~NVIDIA cuVSとCAGRA~
fshuhe
0
350
datadog-incident-management-intro
tetsuya28
0
120
様々なファイルシステム
sat
PRO
0
290
20251102 WordCamp Kansai 2025
chiilog
1
490
データとAIで明らかになる、私たちの課題 ~Snowflake MCP,Salesforce MCPに触れて~ / Data and AI Insights
kaonavi
0
240
20251027_findyさん_音声エージェントLT
almondo_event
2
530
20251029_Cursor Meetup Tokyo #02_MK_「あなたのAI、私のシェル」 - プロンプトインジェクションによるエージェントのハイジャック
mk0721
PRO
6
2.3k
Featured
See All Featured
Done Done
chrislema
186
16k
How to Think Like a Performance Engineer
csswizardry
27
2.2k
Code Reviewing Like a Champion
maltzj
526
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
How STYLIGHT went responsive
nonsquared
100
5.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Pragmatic Product Professional
lauravandoore
36
7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Raft: Consensus for Rubyists
vanstee
140
7.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
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