1
products(id, name)
categories(id, name, product_id)

サンプルコードがあります:

products(1, 'Apple')

そしてカテゴリー

categories(1, 'Iphone', 1)
categories(2, 'Ipad', 1)
categories(3, 'Ipod', 1)

そしてクエリ:

SELECT pr.id, cat.name, pr.name 
FROM `products` as pr
LEFT JOIN `categories` as cat USING(id)
GROUP BY pr.id

しかし、結果は

1, "Iphone", "Apple"

そしてIpad, Ipod、表示しない、それを修正する方法は?

 1, "Iphone, Ipad, Ipod", "Apple"
4

1 に答える 1

2

JOIN条件は、関係ではない2つのID列を結合しようとしています。product.idをcategory.produt_idに結合する必要があります

SELECT pr.id, cat.name, pr.name 
FROM `products` as pr
LEFT JOIN `categories` as cat ON pr.id = cat.product_id
GROUP BY pr.id

編集:カテゴリを連結した結果が1つだけ必要なことを理解しています。選択リストにGROUP_CONCAT関数が必要です。

SELECT pr.id, GROUP_CONCAT(cat.name), ...

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

于 2012-06-18T02:02:50.330 に答える