MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
SQL Server - 相関副問い合わせ(相関サブクエリ)のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
SQL Server - 相関副問い合わせ(相関サブクエリ)
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == 主問い合わせのFROM句にテーブルA、副問い合わせのFROM句にテーブルBがある場合において、<br> 副問い合わせのWHERE句の条件に主問い合わせのテーブルAのカラムがある時、そのSQL文を相関副問い合わせ(相関サブクエリ)と呼ぶ。<br> <br> 相関副問い合わせは、主問い合わせのSQL文を実行した後、取得した行を1行ずつ副問い合わせの条件に設定してSQL文を実行する。<br> (主問い合わせのSQL文→副問い合わせのSQL文)<br> <br> 副問い合わせのみの場合は、副問い合わせのSQL文を実行した後、主問い合わせのSQL文を実行する。<br> (副問い合わせのSQL文→主問合せのSQL文)<br> <syntaxhighlight lang="sql"> SELECT * FROM <テーブルA> WHERE <テーブルAのカラム> > ( SELECT <テーブルBのカラム> FROM <テーブルB> WHERE <テーブルAのカラム> = <テーブルBのカラム> ); </syntaxhighlight> <br><br> == 自己結合での相関副問い合わせ == 下表に示すテーブルがある。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Productテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name ! style="background-color:#66CCFF;" | Category ! style="background-color:#66CCFF;" | Num |- | 1 || Apple || Fruit || 10 |- | 2 || Orange || Fruit || 20 |- | 3 || Carrote || Vegetable || 30 |- | 4 || Eggplant || Vegetable || 40 |} </center> <br> 以下の例では、各カテゴリごとに最も個数の多い商品の名前を表示している。<br> <br> 5行目のWHERE句の条件で、主問い合わせのa.categoryを条件にしているため、相関副問い合わせとなる。<br> # 1行目を実行した後、その結果(レコード)を4行取得する。 # 取得したレコードの1行目のCategoryカラムの値"Fruit"を3行目の条件とする。 <syntaxhighlight lang="sql"> SELECT ID, Name from T_Product a WHERE a.Num = ( SELECT MAX(b.Num) FROM T_Product b WHERE a.Category = b.Category ); </syntaxhighlight> <br> 結果は、以下の通りである。<br> フルーツで個数が最も大きい商品および野菜で個数が最も大きい商品を取得している。<br> ID Name 2 Orange 4 Eggplant <br> 以下のSQL文は、上記の相関副問い合わせのイメージである。<br> <syntaxhighlight lang="sql"> SELECT ID, Name FROM T_Product a WHERE Num = ( SELECT MAX(Num) FROM T_Product b WHERE b.Category = 'Fruit' OR b.Category = 'Vegetable' ); </syntaxhighlight> <br><br> == EXISTS句で相関副問い合わせ == 下表に示すテーブルがある。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Productテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name ! style="background-color:#66CCFF;" | Category ! style="background-color:#66CCFF;" | Num |- | 1 || Apple || Fruit || 10 |- | 2 || Orange || Fruit || 20 |- | 3 || Carrote || Vegetable || 30 |- | 4 || Eggplant || Vegetable || 40 |} </center> <br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Salesテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name |- | 2 || Orange |- | 4 || Eggplant |} </center> <br> 以下の例では、T_Salesテーブルに存在する商品で、T_Productテーブルでの個数が30以上の商品名を表示している。<br> <br> 5行目のWHERE句の条件において、主問い合わせのa.IDを条件にしているため、相関副問い合わせとなる。<br> # まず、1行目を実行して、T_Salesテーブルの2行を取得する。<br> # 次に、4行目〜5行目を実行して、T_ProductテーブルのIDとT_ProductテーブルのIDが同じ商品かつ個数が30個を超える商品を取得する。<br> <br> 4行目のSELECT文の後の1は使用されない。(任意の値を設定できる)<br> <syntaxhighlight lang="sql"> SELECT Name FROM T_Sales a WHERE EXISTS ( SELECT 1 FROM T_Product b WHERE b.Num > 30 AND a.ID = b.ID ); </syntaxhighlight> <br> 以下のSQL文は、上記の副問い合わせの実行イメージである。<br> 条件は、まず、IDが2かつ個数が30以上で、次は、IDが4かつ個数が30以上の商品である。<br> <syntaxhighlight lang="sql"> SELECT Name FROM T_Sales a WHERE EXISTS ( SELECT 1 FROM T_Product b WHERE b.Num > 30 AND (2 = b.ID OR 4 = b.ID) ); </syntaxhighlight> <br> 結果は、以下の通りである。<br> Name Eggplant <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:SQL_Server]]
SQL Server - 相関副問い合わせ(相関サブクエリ)
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse