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

ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == 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>


案内メニュー