[英]MySQL group by multiple columns issue
下面的查询将每个用户的临时概述数据收集到内存表中。 基本上,用户可以按关键字查看项目数。
问题是,它通过keyword_id
计算项目总数。
我需要的是,计算item_count
双方keyword_id
和item_type
( Item
。 type
)。
SELECT
`Item`.`user_id` AS `user_id` ,
`ItemKeyword`.`keywordID` AS `keyword_id` ,
`Keyword`.`title` AS `keyword_title`,
count(`ItemKeyword`.`ItemID`) AS `ico_count`
FROM
(
(
`ItemKeyword`
JOIN `Item` ON(
(
`Item`.`id` = `ItemKeyword`.`ItemID`
)
)
)
JOIN `Keyword` ON(
(
`Keyword`.`id` = `ItemKeyword`.`keywordID`
)
)
)
GROUP BY
`Item`.`user_id` ,
`ItemKeyword`.`keywordID`;
例如,现在结果如下所示
基本上, item_count
是所有item_type
的总数。 我需要的是,将以下结果分开
user_id keyword_id keyword_title item_count
1 9645 surveillance 20
变成这样的东西:
user_id keyword_id keyword_title item_count item_type
1 9645 surveillance 18 1
1 9645 surveillance 2 2
其中, item_count
由keyword_id
和item_type
两者计算。
我不知道如何在此查询中也包含item_type
。
有什么建议么?
我不明白您对方括号(括号)的热爱。 为什么那么多? 我认为您会失去可读性。 这只是一个旁注。
如果需要额外的分组级别,则需要修改查询,如下所示:
SELECT
`Item`.`user_id` AS `user_id` ,
`ItemKeyword`.`keywordID` AS `keyword_id` ,
`Keyword`.`title` AS `keyword_title`,
count(`ItemKeyword`.`ItemID`) AS `ico_count`,
`Item`.`type` AS `item_type`
FROM `ItemKeyword` JOIN `Item` ON
`Item`.`id` = `ItemKeyword`.`ItemID`
JOIN `Keyword` ON
`Keyword`.`id` = `ItemKeyword`.`keywordID`
GROUP BY
`Item`.`user_id` ,
`Item`.`type` ,
`ItemKeyword`.`keywordID`,
`Keyword`.`title`;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.