我试图在一个查询中获取每个类别的各个方面,如下所示:
SELECT b.`id` AS parent_id, b.`name` AS parent_name,
a.`id` AS child_id, a.`name` AS child_name, a.`pageid` AS t_id,
COUNT( c.`id` ) AS deals_in_cat,
d.`aspect_values` AS aspects
FROM `category_parent` AS a
LEFT JOIN `navigation_filters_weightage` AS d ON a.`id` = d.`cat_id`,
`deals_parent_cat` AS b,
`deals` AS c
WHERE a.`parent_id` = b.`id`
AND c.`ebaydeals_category` = a.`id`
GROUP BY a.`id`, d.`frequency`
ORDER BY b.`order` ASC, a.`order` ASC, d.`frequency` DESC;这个查询给出了以下结果:

正如您所看到的,类别的所有方面(在本例中是移动电话)都在一个单独的行中。我想要的是在一个行中获取所有类别的所有方面。因此,我尝试这个查询:
SELECT b.`id` AS parent_id, b.`name` AS parent_name,
a.`id` AS child_id, a.`name` AS child_name, a.`pageid` AS t_id,
COUNT( c.`id` ) AS deals_in_cat,
GROUP_CONCAT( DISTINCT d.`aspect_values` ORDER BY d.`frequency` DESC ) AS aspects
FROM `category_parent` AS a
LEFT JOIN `navigation_filters_weightage` AS d ON a.`id` = d.`cat_id`,
`deals_parent_cat` AS b,
`deals` AS c
WHERE a.`parent_id` = b.`id`
AND c.`ebaydeals_category` = a.`id`
GROUP BY a.`id`
ORDER BY b.`order` ASC , a.`order` ASC;这就产生了以下结果:

正如你所看到的,移动电话的count已经增加了。手机只有271项,但第二次查询几乎将这个数字乘以no。这一类别的各个方面。
我不知道为什么会这样。任何想法都欢迎。
提前谢谢。
发布于 2014-04-11 08:27:19
表deals中可能有重复的in尝试在计数函数中使用DISTINCT
SELECT b.id AS parent_id,
b.name AS parent_name,
a.id AS child_id,
a.name AS child_name,
a.pageid AS t_id,
count(DISTINCT c.id ) AS deals_in_cat ...https://stackoverflow.com/questions/23007249
复制相似问题