📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の7版が非表示) | |||
| 16行目: | 16行目: | ||
<br> | <br> | ||
===== INNER JOIN句の使用方法 ===== | ===== INNER JOIN句の使用方法 ===== | ||
SQL Serverで内部結合するには、INNER JOIN句の前後に結合するテーブルを記述する。 | SQL Serverで内部結合するには、INNER JOIN句の前後に結合するテーブルを記述する。<br> | ||
テーブル名の後にスペースを入れて別名を指定する。 | テーブル名の後にスペースを入れて別名を指定する。<br> | ||
ON句は結合する列を指定する。列はテーブル名の別名を必ず付ける。 | ON句は結合する列を指定する。列はテーブル名の別名を必ず付ける。<br> | ||
<br> | |||
内部結合は、INNER JOIN句を使用せずに、結合条件をWHERE句で記述することもできる。 | 内部結合は、INNER JOIN句を使用せずに、結合条件をWHERE句で記述することもできる。<br> | ||
<br> | <br> | ||
===== サンプルデータ ===== | ===== サンプルデータ ===== | ||
| 67行目: | 67行目: | ||
===== 例1 INNER JOIN句で結合する ===== | ===== 例1 INNER JOIN句で結合する ===== | ||
empテーブルとtokyo_autテーブル、osaka_autテーブルの3つのテーブルをINNER JOIN句で内部結合する。<br> | empテーブルとtokyo_autテーブル、osaka_autテーブルの3つのテーブルをINNER JOIN句で内部結合する。<br> | ||
これら3つのテーブルに、noが存在するレコードであるA001のみ抽出される。 | これら3つのテーブルに、noが存在するレコードであるA001のみ抽出される。<br> | ||
< | <syntaxhighlight lang="sql"> | ||
--INNER JOIN | --INNER JOIN | ||
SELECT e.no, e.name, t.no tokyo, o.no osaka | SELECT e.no, e.name, t.no tokyo, o.no osaka | ||
| 75行目: | 75行目: | ||
JOIN osaka_aut o ON t.no = o.no | JOIN osaka_aut o ON t.no = o.no | ||
WHERE e.no < 'A100'; | WHERE e.no < 'A100'; | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
<center> | <center> | ||
| 87行目: | 87行目: | ||
<br> | <br> | ||
===== 例2 WHERE句で結合する(INNER JOIN句を使用しないパターン) ===== | ===== 例2 WHERE句で結合する(INNER JOIN句を使用しないパターン) ===== | ||
< | <syntaxhighlight lang="sql"> | ||
--INNER JOIN句を使用しない | --INNER JOIN句を使用しない | ||
SELECT e.no, e.name, t.no tokyo, o.no osaka | SELECT e.no, e.name, t.no tokyo, o.no osaka | ||
| 94行目: | 94行目: | ||
AND e.no = t.no | AND e.no = t.no | ||
AND t.no = o.no; | AND t.no = o.no; | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
<center> | <center> | ||
| 112行目: | 112行目: | ||
<br> | <br> | ||
なお、SQL Serverでは、LEFT OUTER JOINをLEFT JOINと記述してもよい。<br> | なお、SQL Serverでは、LEFT OUTER JOINをLEFT JOINと記述してもよい。<br> | ||
<br> | |||
===== LEFT OUTER JOIN句の使用方法 ===== | |||
SQL Serverで左外部結合するには、LEFT OUTER JOIN句の前後に結合するテーブルを記述する。<br> | |||
テーブル名の後にスペースを入れて別名を指定する。<br> | |||
ON句は結合する列を指定する。列はテーブル名の別名を必ず付ける。<br> | |||
<br> | |||
===== サンプルデータ ===== | |||
<center> | |||
'''empテーブル'''<br> | |||
{| class="wikitable" | |||
|- | |||
! no !! name | |||
|- | |||
| A001 || 佐藤花子 | |||
|- | |||
| A002 || 田中太郎 | |||
|- | |||
| A003 || 加藤一 | |||
|- | |||
| A004 || 青木花 | |||
|- | |||
| A005 || 藤田学 | |||
|} | |||
</center> | |||
<br> | |||
<center> | |||
'''tokyo_autテーブル''' | |||
{| class="wikitable" | |||
|- | |||
! no | |||
|- | |||
| A001 | |||
|- | |||
| A005 | |||
|- | |||
| A010 | |||
|} | |||
</center> | |||
<br> | |||
<center> | |||
'''osaka_autテーブル''' | |||
{| class="wikitable" | |||
|- | |||
! no | |||
|- | |||
| A001 | |||
|- | |||
| A002 | |||
|- | |||
| A009 | |||
|} | |||
</center> | |||
<br> | |||
===== 例 LEFT OUTER JOIN句で複数テーブルを結合する ===== | |||
LEFT OUTER JOIN句で優先されるテーブルは左側にあるempテーブルである。<br> | |||
empテーブルは優先されるテーブルなので、全レコードが抽出される。<br> | |||
以下の例では、empテーブルは5レコードあるので、empテーブルのe.noとe.nameは全て表示される。<br> | |||
<br> | |||
tokyo_autテーブルとosaka_autテーブルは、ON句で指定された条件に一致する場合のみ抽出される。<br> | |||
tokyo_autテーブルは、noがA001とA005のみなので、この2レコードのみ表示される。A010は結合条件に一致しないため表示されない。<br> | |||
osaka_autテーブルは、noがA001とA002のみなので、この2レコードのみ表示される。A009は結合条件に一致しないため表示されない。<br> | |||
<syntaxhighlight lang="sql"> | |||
--LEFT OUTER JOINの結合 | |||
SELECT e.no, e.name, t.no tokyo, o.no osaka | |||
FROM emp e | |||
LEFT JOIN tokyo_aut t ON e.no = t.no | |||
LEFT JOIN osaka_aut o ON e.no = o.no | |||
WHERE e.no < 'A100'; | |||
</syntaxhighlight> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! e.no !! e.name !! tokyo !! osaka | |||
|- | |||
| A001 || 佐藤花子 || A001 || A001 | |||
|- | |||
| A002 || 田中太郎 || || A002 | |||
|- | |||
| A003 || 佐藤花子 || || | |||
|- | |||
| A004 || 佐藤花子 || || | |||
|- | |||
| A005 || 藤田学 || A005 || | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||
| 120行目: | 206行目: | ||
<br> | <br> | ||
SQL Serverでは、RIGHT OUTER JOINをRIGHT JOINと記述してもよい。<br> | SQL Serverでは、RIGHT OUTER JOINをRIGHT JOINと記述してもよい。<br> | ||
<br> | |||
外部結合には、LEFT OUTER JOINとRIGHT OUTER JOINがあるが、LEFT OUTER JOINを使用するのが一般的なので、<br> | |||
ここでは、RIGHT OUTER JOINの例は省略する。<br> | |||
<br><br> | <br><br> | ||
| 128行目: | 217行目: | ||
<br> | <br> | ||
SQL Serverでは、FULL OUTER JOINをFULL JOINと記述してもよい。<br> | SQL Serverでは、FULL OUTER JOINをFULL JOINと記述してもよい。<br> | ||
<br> | |||
===== FULL OUTER JOIN句の使用方法 ===== | |||
SQL Serverで完全外部結合するには、FULL OUTER JOIN句の前後に結合するテーブルを記述する。<br> | |||
テーブル名の後にスペースを入れて別名を指定する。<br> | |||
ON句は、結合する列を指定する。列はテーブル名の別名を必ず付ける。<br> | |||
<br> | |||
===== サンプルデータ ===== | |||
<center> | |||
'''empテーブル'''<br> | |||
{| class="wikitable" | |||
|- | |||
! no !! name | |||
|- | |||
| A001 || 佐藤花子 | |||
|- | |||
| A002 || 田中太郎 | |||
|- | |||
| A003 || 加藤一 | |||
|- | |||
| A004 || 青木花 | |||
|- | |||
| A005 || 藤田学 | |||
|} | |||
</center> | |||
<br> | |||
<center> | |||
'''tokyo_autテーブル''' | |||
{| class="wikitable" | |||
|- | |||
! no | |||
|- | |||
| A001 | |||
|- | |||
| A010 | |||
|} | |||
</center> | |||
<br> | |||
===== 例 FULL OUTER JOIN句で結合する ===== | |||
empテーブルとtokyo_autテーブルをFULL OUTER JOINで完全外部結合する。<br> | |||
empテーブルにしか存在しないレコード、tokyo_autテーブルにしか存在しないレコードも含めて全て抽出される。<br> | |||
<syntaxhighlight lang="sql"> | |||
--FULL JOIN | |||
SELECT e.no, e.name, t.no tokyo | |||
FROM emp e | |||
JOIN tokyo_aut t ON e.no = t.no | |||
WHERE e.no < 'A100' | |||
</syntaxhighlight> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! e.no !! e.name !! tokyo | |||
|- | |||
| A001 || 佐藤花子 || A001 | |||
|- | |||
| A002 || 田中太郎 || | |||
|- | |||
| A003 || 加藤一 || | |||
|- | |||
| A004 || 青木花 || | |||
|- | |||
| A005 || 藤田学 || | |||
|- | |||
| || || A010 | |||
|} | |||
</center> | |||
<br><br> | <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__ | __FORCETOC__ | ||
[[カテゴリ:SQL_Server]] | [[カテゴリ:SQL_Server]] | ||