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"
答案 0 :(得分:2)
您的JOIN条件正在尝试加入两个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
编辑: 我意识到你只需要一个类别连接的结果。您需要在选择列表中使用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