MySQL 1つの列に紐づく複数のカテゴリの結合

今回は、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;

すると必要な部分だけが絞り込まれ表示されます。

にほんブログ村 IT技術ブログへ

スポンサーリンク
スポンサーリンク
SNSフォローボタン

フォローする

スポンサーリンク
スポンサーリンク