「テーブルの結合」の版間の差分

ナビゲーションに移動 検索に移動
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>
===== 例1  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>
<source 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';
</source>
<br>
<center>
{| class="wikitable"
|-
! e.no !! e.name !! tokyo !! osaka
|-
| A001 || 佐藤花子 || A001 || A001
|-
| A002 || 田中太郎 ||  || A002
|-
| A003 || 佐藤花子 ||  ||
|-
| A004 || 佐藤花子 ||  ||
|-
| A005 || 藤田学 || A005 ||
|}
</center>
<br><br>
<br><br>


案内メニュー