13,000
回編集
(ページの作成:「== 概要 == SQL Serverをはじめ、各データベースはテーブルをJOIN(結合)することがよくある。<br> ここでは代表的なJOINの種類につい…」) |
|||
12行目: | 12行目: | ||
INNER JOIN(内部結合)は、両方のテーブルの結合条件に一致するものだけを取得する。<br> | INNER JOIN(内部結合)は、両方のテーブルの結合条件に一致するものだけを取得する。<br> | ||
外部結合のようにテーブルの優先度は存在しない。<br> | 外部結合のようにテーブルの優先度は存在しない。<br> | ||
<br> | |||
SQL Serverでは、INNER JOINをJOINと記述してもよい。<br> | |||
<br> | |||
===== INNER JOIN句の使用方法 ===== | |||
SQL Serverで内部結合するには、INNER JOIN句の前後に結合するテーブルを記述する。 | |||
テーブル名の後にスペースを入れて別名を指定する。 | |||
ON句は結合する列を指定する。列はテーブル名の別名を必ず付ける。 | |||
内部結合は、INNER JOIN句を使用せずに、結合条件をWHERE句で記述することもできる。 | |||
<br> | |||
===== サンプルデータ ===== | |||
<center> | |||
'''empテーブル'''<br> | |||
{| class="wikitable" | |||
|- | |||
! no !! name | |||
|- | |||
| A001 || 佐藤花子 | |||
|- | |||
| A002 || 田中太郎 | |||
|- | |||
| A003 || 加藤一 | |||
|- | |||
| A004 || 青木花 | |||
|- | |||
| A005 || 藤田学 | |||
|} | |||
</center> | |||
<br> | |||
<center> | |||
'''tokyo_autテーブル''' | |||
{| class="wikitable" | |||
|- | |||
! no | |||
|- | |||
| A001 | |||
|- | |||
| A005 | |||
|} | |||
</center> | |||
<br> | |||
<center> | |||
'''osaka_autテーブル''' | |||
{| class="wikitable" | |||
|- | |||
! no | |||
|- | |||
| A001 | |||
|- | |||
| A002 | |||
|} | |||
</center> | |||
<br> | |||
===== 例1 INNER JOIN句で結合する ===== | |||
empテーブルとtokyo_autテーブル、osaka_autテーブルの3つのテーブルをINNER JOIN句で内部結合する。<br> | |||
これら3つのテーブルに、noが存在するレコードであるA001のみ抽出される。 | |||
<source lang="sql"> | |||
--INNER JOIN | |||
SELECT e.no, e.name, t.no tokyo, o.no osaka | |||
FROM emp e | |||
JOIN tokyo_aut t ON e.no = t.no | |||
JOIN osaka_aut o ON t.no = o.no | |||
WHERE e.no < 'A100'; | |||
</source> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! e.no !! e.name !! tokyo !! osaka | |||
|- | |||
| A001 || 佐藤花子 || A001 || A001 | |||
|} | |||
</center> | |||
<br> | |||
===== 例2 WHERE句で結合する(INNER JOIN句を使用しないパターン) ===== | |||
<source lang="sql"> | |||
--INNER JOIN句を使用しない | |||
SELECT e.no, e.name, t.no tokyo, o.no osaka | |||
FROM emp e, tokyo_aut t, osaka_aut o | |||
WHERE e.no < 'A100' | |||
AND e.no = t.no | |||
AND t.no = o.no; | |||
</source> | |||
<br> | |||
<center> | |||
{| class="wikitable" | |||
|- | |||
! e.no !! e.name !! tokyo !! osaka | |||
|- | |||
| A001 || 佐藤花子 || A001 || A001 | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||