今回は、1つの列に紐づく複数のカテゴリの結合をします。
商品ID 1の カテゴリが2つ持つ場合 中間テーブルには product_id1に対してカテゴリーidが2つ存在します。この中間テーブルを利用し、一つの商品idに紐づく情報を出力します。
商品テーブル(P) 中間テーブル(pc) カテゴリーテーブル(c)
id | name | price | product_id | category_id | id | name | ||
---|---|---|---|---|---|---|---|---|
1 | 商品0001 | 5300 | 1 | 4 | 1 | 書籍 | ||
2 | 商品0002 | 5900 | 1 | 5 | 2 | ミュージック | ||
3 | 商品0003 | 1600 | 2 | 3 | 3 | 家電 | ||
4 | 商品0004 | 3800 | 2 | 4 | 4 | パソコン | ||
5 | 商品0005 | 9500 | 3 | 1 | 5 | ホーム&キッチン |
それでは、商品ID:2のid ・商品名・カテゴリ名を全て出力します。
select * from 商品テーブル名 p inner join 中間テーブル名 pc on p.id = pc.product_id inner join カテゴリーテーブル名 c on pc.category_id = c.id where p.id = 2;
出力結果は以下のようになります。
次にアスタリスク「*」を消して必要な部分だけを取り出します。
※asは省略(可)
今回の必要な情報は=商品ID・商品名・カテゴリ名として絞り込みます。
select p.id as product_id, p.name as product_name, c.name as category_name from 商品テーブル名 p inner join 中間テーブル名 pc on p.id = pc.product_id inner join カテゴリーテーブル名 c on pc.category_id = c.id where p.id = 2;
すると必要な部分だけが絞り込まれ表示されます。
コメント