下面的查询将每个用户的临时概述数据收集到内存表中。基本上,用户看到,按关键字计算项目数。
问题是,它按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
也包含在此查询中。
有什么建议吗?
答案 0 :(得分:2)
我不明白你对括号(括号)的喜爱。为什么这么多?在我看来,你失去了可读性。这只是一个侧面说明。
如果您需要额外的分组级别,则需要修改查询,如下所示:
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`;