SQL 複数テーブルで結合しないサンプル(cross join)

SQLの複数テーブルで結合しないサンプルです。cross joinです。

目次

説明 複数テーブルで結合しない(cross join)
サンプル 複数テーブルで結合しないサンプル
  複数テーブルで結合しない+whereの条件をつける

複数テーブルで結合しない(cross join)

select 項目
from テーブルA,テーブルB
select 項目 from テーブルA
cross join テーブルB
  • from句にテーブルAとテーブルBを指定し、項目で結合しない場合、それぞれのテーブルの行のすべての組み合わせで抽出します。
    →テーブルAに3行あり、テーブルBに2行あった場合は、3*2=6行表示されます。
  • cross joinを指定しても同じ結果になります。
  • テーブルAまたはテーブルBにwhereで条件を指定することもできます。その場合、絞られた条件でのすべての組み合わせで抽出します。

複数テーブルで結合しないサンプル

複数テーブルで結合しないサンプルです。

以下、2つのテーブルがあるとします。
1つめのsyainテーブルです。

syainテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato

2つめのsalesテーブルです。

salesテーブル
id name
2 みかん
4 りんご

SQL

上記テーブルに対して結合しないでSQLを実行します。

select * from syain,
sales

1行目と2行目にテーブルがありますが、結合していません。

結果

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

id name romaji id_1 name_1
1 鈴木 suzuki 2 みかん
2 田中 tanaka 2 みかん
3 佐藤 sato 2 みかん
1 鈴木 suzuki 4 りんご
2 田中 tanaka 4 りんご
3 佐藤 sato 4 りんご

syainテーブルとsaleテーブルの各行の組み合わせで抽出されます。
3*2=6行表示されます。

複数テーブルで結合しない+whereの条件をつける

複数テーブルで結合しない+whereの条件をつけるサンプルです。

以下、2つのテーブルがあるとします。
1つめのsyainテーブルです。

syainテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato

2つめのsalesテーブルです。

salesテーブル
id name
2 みかん
4 りんご

SQL

上記テーブルに対して結合しない+whereの条件をつけて実行します。

select * from syain a,
sales b
where a.id in (2,3)
and b.id = 2

3,4行目は、それぞれのテーブルに条件をつけて絞っています。

結果

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

id name romaji id_1 name_1
2 田中 tanaka 2 みかん
3 佐藤 sato 2 みかん

whereで条件が絞られてからのsyainテーブルとsaleテーブルの各行の組み合わせで抽出されます。

関連の記事

SQL INNER JOINのサンプル(内部結合)
SQL 外部結合のサンプル(left outer join/right outer join)

△上に戻る