Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL:将计数和组相加以合并查询_Mysql_Sql_Select_Count_Sum - Fatal编程技术网

Mysql SQL:将计数和组相加以合并查询

Mysql SQL:将计数和组相加以合并查询,mysql,sql,select,count,sum,Mysql,Sql,Select,Count,Sum,是否存在将这两个查询合并为一个查询的方法,以便结果为: ChannelId | ContentType | ContentTypeCount | SumOfAllContentTypes 100 | link | 59 | 179 100 | photo | 49 | 179 100 | status | 2 | 179

是否存在将这两个查询合并为一个查询的方法,以便结果为:

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

结果=100 |链接| 59;等等

提前感谢您的帮助。

试试这个:

select A.*, B.*
from (
  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
) A
join (
  SELECT
  COUNT(posts.id) as Total
  FROM posts
  INNER JOIN channels ON channels.id = posts.channel_id
  WHERE channels.site_id = 1003
  AND channels.channel_type_id = 1
) B on 1=1

不是特别有效,但简单易行。

可能吧,但你为什么要这么做?两个查询使用的条件不同,彼此不适用。这就像想要一个苹果和一个橘子,然后要求将它们组合成一个orple。你可以再
加入帖子
,但你为什么要强调数据库,寻找一些你已经可以清楚地得到的东西呢?@MarcB:我们真的应该判断OP中陈述的业务需求吗?@PieterGeerkens:澄清(而不是判断)业务需求可能会使这些需求能够通过不同于OP所设想的技术手段得到满足。@MarkBannister:这很好,但您可能会遇到比您预期的更强的需求。谢谢您,Pieter。该查询有效,并在0.0027秒内返回结果。
select A.*, B.*
from (
  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
) A
join (
  SELECT
  COUNT(posts.id) as Total
  FROM posts
  INNER JOIN channels ON channels.id = posts.channel_id
  WHERE channels.site_id = 1003
  AND channels.channel_type_id = 1
) B on 1=1