【发布时间】:2014-07-17 18:16:20
【问题描述】:
我有不同 'manufacturer' 字段的重复记录。我正在尝试GROUP BY i.stocknumber,但这只会删除一条记录而不会收集其他制造商的结果。
有些记录有一个NULL 制造商字段,我尝试在子查询中使用GROUP_CONCAT 来省略“制造商”的不同结果。
这是我当前的查询:
SELECT i.id,i.stocknumber,m.manufacturer
FROM inventory i
INNER JOIN makes mk on i.make = mk.id
INNER JOIN models md on i.model = md.id
INNER JOIN classes cl on i.class = cl.id
LEFT JOIN (
SELECT idm.id, idm.inventory_id, dm.manufacturer AS 'manufacturer'
FROM display_manufacturers dm
INNER JOIN inventory_display_manufacturers idm ON dm.id = idm.display_manufacturer_id
) m ON i.id = m.inventory_id
-- GROUP BY i.stocknumber
ORDER BY i.stocknumber
我得到的结果是:
对通过连接manufacturer 字段对重复记录进行分组有什么想法吗?
(注意:我已经在子查询中尝试过GROUP_CONCAT)
预期结果:
id | stocknumber | manufacturer
----------------------------------
946 | 011A | NULL
907 | 1001 | Sports Coach, Coachmen
1032 | 1001x | Sports Coach
等等……
【问题讨论】:
-
您在主查询中尝试过
GROUP_CONCAT吗? -
为什么要将制造商的列表串联在一起?这里的最终游戏是什么?如果您追求唯一的库存编号和制造商,那么您的查询就在现场。如果您只需要一个唯一库存编号列表,请排除制造商...我还没有看到真正的问题...
-
查看所需结果的编辑。
-
我认为@Gordon 已经完成了你所追求的。只要确保您的 group by 没有被注释掉
标签: php mysql subquery group-concat