2016-10-26 23 views
1

私は3つのテーブル:Products、Categories、Product_Categoryを持っています。MySQL:2つの他のテーブルを参照する1つのテーブルからフィールドを選択

Productsテーブルがあります: "ID、PRODUCT_NAMEを"

id  | product_name 
------ | ------------ 
1  | glove 
2  | shirt 

Categoriesテーブルがあります: "ID、カテゴリ名"

id  | category_name 
------ | ------------- 
1  | cotton 
2  | polyester 
3  | leather 

PRODUCT_CATEGORYテーブルがある "ID、PRODUCT_ID、CATEGORY_ID"

id | product_id | category_id 
-- | ---------- | ----------- 
1 | 1   | 1 
2 | 1   | 3 
3 | 2   | 2 

製品には複数のカテゴリがあり、私は、クエリから次の出力は、私が

出力を実行します:
手袋 - 綿、革
シャツ - ポリエステル

をここで私は運を試してみたものです。

SELECT products.product_name, categories.category_name 
FROM product_category 
INNER JOIN products on product_category.product_id=products.id 
INNER JOIN categories on product_category.category_id=categories.id 
LIMIT 0,1000 

私はこれがおそらく簡単なクエリであることを認識しています。それを理解できません。

+0

を試してみては単なるタイプミスかもしれませんが、商品コード2は、サブカテゴリを持っていないとサブカテゴリ3は、一致するカテゴリを持っていません! – RiggsFolly

+0

それは本当にタイプミスでした。修正済み(私が願って) –

+0

@PaulKragthorpe上記のクエリの問題は何ですか?期待される出力は何ですか – rocks

答えて

1

この

select p.product_name, group_concat(c.category_name, ",") category_name 
from Product_Category pc 
join Categories c ON (pc.category_id = c.id) 
join Products p ON (pc.product_id = p.id) 
group by 1 
+0

ニース。ありがとう!私はそれが何か簡単だったことを知っていた。それは基本的に私が知らなかったgroup_concatでした。私は今=== –

+0

クール:)も正解答えを – rocks

+0

私はしたが、すぐに表示するための十分な評判を持っていない。 –

関連する問題