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"

最佳答案

您的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

关于php - 在php mysql中合并2字段时出错?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11076206/

10-10 16:54
查看更多