SQL INNER JOIN 内部結合のサンプル

SQLのinner joinのサンプルです。

目次

サンプル inner join(内部結合)
  on句の結合条件とwhere句の条件で絞る
  inner joinなしの場合
  結合するテーブルが3つの場合

inner join(内部結合)

select
   項目
from テーブルA 
    inner  join テーブルB
on
   結合する条件
where
  抽出する条件
  • inner joinは、テーブルAとテーブルBを結合して、結合する条件に一致した行を抽出します(図の黄色の部分)。
  • onの後に結合する条件を記述します。件数を絞る条件も追加できます。
  • whereは、結合されたデータ(※)に対して条件をつけて抽出します。
    (※オプティマイザにより結合前のデータを対象とする場合があります。)
  • inner joinは、内部結合と呼ばれます。inner(内側)のjoin(結合)です。

inner joinの使用例

次の2つのテーブルがあるとします。

salesテーブル
id price
1 300
2 400
3 200
productテーブル
id name
2 鉛筆
3 消しゴム
4 ノート

SQL

上記テーブルに対してinner joinを使用してデータを抽出します。

select 
  s.id,
  p.name,
  s.price
from sales s 
  inner join product p
on 
  s.id = p.id;

6行目は、inner joinです。
8行目は、上記2つのテーブルにあるidを結合条件としています。

結果

結果は、以下のとおりです。

id name price
2 鉛筆 400
3 消しゴム 200

salesテーブルとproductテーブルのidが一致した行のみ表示されます。

 

on句の結合条件とwhere句の条件で絞る

inner joinのon句の結合条件とwhere句の条件で絞るサンプルです。

select 
  s.id,
  p.name,
  s.price
from sales s 
  inner join product p
on 
  s.id = p.id
where
  p.name like '%筆';

イメージとしては、7行目のon句で件数が2件になりwhere句で1件になるですが、実際はオプティマイザにより処理順序は変わる場合があります。

inner joinなしの場合

inner joinなしでも内部結合できますがinner joinありの方が結合条件がわかりやすいです。

select 
  s.id,
  p.name,
  s.price
from 
  sales s,
  product p
where
  s.id = p.id and
  p.name like '%筆';

 

結合するテーブルが3つの場合

次の3つのテーブルがあるとします。

salesテーブル
id price company_cd
1 300 101
2 400 201
3 200 301
productテーブル
id name
2 鉛筆
3 消しゴム
4 ノート
companyテーブル
id name
201 A社
301 B社

SQL

上記テーブルに対してinner joinを使用してデータを抽出します。

select 
  s.id,
  p.name,
  s.price,
  c.name as company
from 
  sales s 
   inner join product p
   on 
     s.id = p.id
   inner join company c
   on
     s.company_cd = c.id;

salesテーブルに対してproductテーブルとcompanyテーブルを結合しています。

結果

結果は、以下のとおりです。

id name price company
2 鉛筆 400 A社
3 消しゴム 200 B社

関連の記事

SQL LEFT OUTER JOIN 外部結合のサンプル
SQL 副問合せのサンプル(サブクエリ)
SQL 自己結合のサンプル
SQL UNIONとUNION ALLのサンプル(結合して抽出)

△上に戻る