目次

複数のテーブルの列を掛け合わせる - SQL

複数のテーブルの列を掛け合わせるSQL文を紹介します。

概要

複数のテーブルがある場合に、列同士を掛け合わせて出力したい場合があります。
メモ
cross join を利用しても同様の結果を取得できます。cross joinについてはこちらの記事を参照してください。

書式

[テーブル名1]と[テーブル名2]を掛け合わせる場合の書式は以下です。
select * from [テーブル名1], [テーブル名2]

2つ以上の複数のテーブルを掛け合わせる場合は以下の書式となります。
select * from [テーブル名1], [テーブル名2], [テーブル名3], ... , [テーブル名n]

テーブル1、テーブル2の列名に同じ名称がある場合は列名の衝突が起きるため、以下の書式でそれぞれのテーブルを識別できます。
select [列名1],[列名2], ... [列名n] from [テーブル名1] [テーブルの別名1], [テーブル名2] [テーブルの別名2]
[列名]には[テーブルの別名].[列名] の形式で指定できます。

以下のテーブルを用意します。
Products
idNameCategoryCodePrice
1ぺんぎんクッキー改焼き菓子PRD-A-001240
2らくだキャラメル生菓子PRD-C-01685
3しろくまアイス氷菓PRD-A-201320
Warehouse
idplacecapacity
1東京4500
2大阪3000
3福岡1600
4札幌2200

次のクエリを実行します。
select * from Product,Warehouse

結果は以下になります。2つのテーブルのそれぞれの行を掛け合わせた結果が返されます。
idNameCategoryCodePriceidplacecapacity
1ぺんぎんクッキー改焼き菓子PRD-A-0012401東京4500
1ぺんぎんクッキー改焼き菓子PRD-A-0012402大阪3000
1ぺんぎんクッキー改焼き菓子PRD-A-0012403福岡1600
1ぺんぎんクッキー改焼き菓子PRD-A-0012404札幌2200
2らくだキャラメル生菓子PRD-C-016851東京4500
2らくだキャラメル生菓子PRD-C-016852大阪3000
2らくだキャラメル生菓子PRD-C-016853福岡1600
2らくだキャラメル生菓子PRD-C-016854札幌2200
3しろくまアイス氷菓PRD-A-2013201東京4500
3しろくまアイス氷菓PRD-A-2013202大阪3000
3しろくまアイス氷菓PRD-A-2013203福岡1600
3しろくまアイス氷菓PRD-A-2013204札幌2200

上記の結果では、id列が同名になっているため、それぞれの列名を別名にするためには、以下のクエリとします。
select T1.id, T1.Name, T1.Category, T1.Code, T2.id as wid, T2.place, T2.Capacity from Product T1,Warehouse T2

以下の結果となります。
idNameCategoryCodePricewidplacecapacity
(行のレコードは先のクエリと同様)

補足
同じ結果を得る cross join を利用したSQL文は以下です。
select * from Product cross join Warehouse
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2023-05-06
作成日: 2023-03-26
iPentec all rights reserverd.