Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
Sql 合并具有不同WHERE条件的不同表中的计数(*)_Sql - Fatal编程技术网

Sql 合并具有不同WHERE条件的不同表中的计数(*)

Sql 合并具有不同WHERE条件的不同表中的计数(*),sql,Sql,我有三张桌子 OWNERS: pk name POSTS: pk, post_date, owner_pk REPLIES: pk,reply_date, post_pk,owner_pk,comment_count 在两个日期之间:date1和date2我希望结果为: 所有者:姓名计数(帖子)总和(评论计数) 我的问题是,我无法理解如何编写一个单独的查询来分别对POSTS和reply表求和 例:第1天一篇文章有两条评论。第二天一篇文章没有评论。回复表存储给定帖子/天的评论总数 PostA

我有三张桌子

OWNERS: pk name
POSTS: pk, post_date, owner_pk
REPLIES: pk,reply_date, post_pk,owner_pk,comment_count
在两个日期之间:date1和date2我希望结果为:

所有者:姓名计数(帖子)总和(评论计数)

我的问题是,我无法理解如何编写一个单独的查询来分别对POSTS和reply表求和

例:第1天一篇文章有两条评论。第二天一篇文章没有评论。回复表存储给定帖子/天的评论总数

PostA     Day1
CommentA1 Day1 
CommentA2 Day1 
PostB     Day2
CommentA3 Day2
PostC     Day3
运行第1天的查询:

Owner:Name count(post) sum(comment_count)
OwnerName  1           2    
运行第2天的查询:

OwnerName  1         1     
在第3天运行查询:

OwnerName  1         0     
与其使用
SUM()
,不如使用
COUNT(DISTINCT)

与其使用
SUM()
,不如使用
COUNT(DISTINCT)


你可能需要在你的问题中提供更多的细节,但我怀疑你想要的是这样的东西:

SELECT name, COUNT(posts.pk), COUNT(replies.pk)
  FROM owners, OUTER (posts, OUTER replies)
  WHERE owners.pk = posts.owner_pk
    AND posts.pk = replies.post_pk
    AND (posts.post_date BETWEEN ? AND ? OR replies.reply_date BETWEEN ? AND ?)
  GROUP BY name

你可能需要在你的问题中提供更多的细节,但我怀疑你想要的是这样的东西:

SELECT name, COUNT(posts.pk), COUNT(replies.pk)
  FROM owners, OUTER (posts, OUTER replies)
  WHERE owners.pk = posts.owner_pk
    AND posts.pk = replies.post_pk
    AND (posts.post_date BETWEEN ? AND ? OR replies.reply_date BETWEEN ? AND ?)
  GROUP BY name

据我所知,回复表中没有owner_pk列tell@kevev22这是第三列
POSTS:pk,post\u date,owner\u pk
我添加了逗号不知道你的意思。OP的意思是表格是回复:回复日期,发布主键。您正在r.owner\u pk=o.pk上使用
左连接回复r
。没有
r.owner\u pk
@kevev22谢谢,我错过了回复只有帖子外键,而不是所有者外键。。。另外,我希望回复确实有PK,尽管OP没有提到…谢谢你的帮助。我的例子是错误的。回复表确实有一个所有者的外键,并且还保存一个特定回复/天的评论数的值。在查询中,我需要给定日期的计数(posts)和总和(comment\u COUNT)。再次感谢。就我所知,回复表中没有owner_pk列tell@kevev22这是第三列
POSTS:pk,post\u date,owner\u pk
我添加了逗号不知道你的意思。OP的意思是表格是回复:回复日期,发布主键。您正在r.owner\u pk=o.pk上使用
左连接回复r
。没有
r.owner\u pk
@kevev22谢谢,我错过了回复只有帖子外键,而不是所有者外键。。。另外,我希望回复确实有PK,尽管OP没有提到…谢谢你的帮助。我的例子是错误的。回复表确实有一个所有者的外键,并且还保存一个特定回复/天的评论数的值。在查询中,我需要给定日期的计数(posts)和总和(comment\u COUNT)。再次感谢。我从来没有见过没有连接的外部-这是标准吗?你怎么能分辨左/右/全?它当然是有效的SQL,而且是我最熟悉的方言。(我一定有点老派。)@Michael Frederickson的回答可能是你更熟悉的风格。是的,这是ansi标准,我要查一下。我从未见过没有连接的外部-这是标准吗?你怎么能分辨左/右/全?它当然是有效的SQL,而且是我最熟悉的方言。(我一定有点老派。)@Michael Frederickson的回答可能是你更熟悉的风格。是的,这是ansi标准,我要查一下。