【发布时间】:2013-03-13 18:43:20
【问题描述】:
有没有一种方法是将这两个查询合并为一个查询,这样的结果是:
ChannelId | ContentType | ContentTypeCount | SumOfAllContentTypes
100 | link | 59 | 179
100 | photo | 49 | 179
100 | status | 2 | 179
100 | video | 4 | 179
101 | link | 15 | 179
101 | status | 50 | 179
以下是我目前正在使用的查询:
SELECT
COUNT(posts.id)
FROM posts
INNER JOIN channels ON channels.id = posts.channel_id
WHERE channels.site_id = 1003
AND channels.channel_type_id = 1
结果 = 179
和..
SELECT
posts.channel_id,
posts.contenttype,
COUNT(posts.contenttype) as contenttypecount
FROM posts
INNER JOIN channels ON channels.id = posts.channel_id
WHERE channels.site_id = 1003
AND channels.channel_type_id = 1
GROUP BY posts.channel_id, posts.contenttype
结果 = 100 |链接 | 59;等等。
提前感谢您的帮助。
【问题讨论】:
-
可能,但您为什么要这样做?两个查询都使用彼此不适用的不同条件。这就像想要一个苹果和一个橙子,并要求将它们组合成一个 orple。
-
你可以再次
JOIN posts,但是为什么你会因为你已经清楚地得到的东西而强调数据库? -
@MarcB:我们真的应该判断OP所说的业务需求吗?
-
@PieterGeerkens:澄清(不评判)业务要求可能会使用不同的技术来满足这些要求意味着比 OP 所设想的。
-
@MarkBannister:这很好,但你可能会遇到比你想要的更强大的情况。
标签: mysql sql select count sum