我不确定标题是否正确我的问题,我最好举个例子。
我有三个表:Publication
,Journal
,Published
。他们的专栏如下:
**Publication table**
pub_id, journal_id
**Journal table**
journal_id, article_id
**Published table**
article_id
所以如果我这样做
select pub.pub_id, count(j.article_id)
from publication pub
inner join journal j on pub.journal_id=j.journal_id
group by pub.pub_id
我得到了每个total number of articles
需要发布的期刊的pub_id
,对吗?
如果我这样做
select pub.pub_id, count(p.article_id)
from publication pub
inner join journal j on pub.journal_id=j.journal_id
inner join published p on j.article_id=p.article_id
group by pub.pub_id
我得到了每个total number of published articles
需要发布的期刊的pub_id
,对吗?
通过上述两个查询,我可以获得the number of articles that need to be published
和the number of articles that have been published
。
我的问题是如何编写单个查询以同时获取这两个数字?
我需要在同一张表中显示这两个数字。
P.S:我正在使用Microsoft SQL Server
答案 0 :(得分:0)
尝试
select pub.pub_id, count(p.article_id), count(distinct j.article_id)
from publication pub
inner join journal j on pub.journal_id=j.journal_id
left join published p on j.article_id=p.article_id
group by pub.pub_id
答案 1 :(得分:0)
您可以使用count(distinct ...)
只计算一次日记帐,尽管通过添加join
添加了额外的行。这样您就可以left join
published
表:
select pub.pub_id, count(distinct j.journal_id), count(p.article_id)
from publication pub
inner join journal j on pub.journal_id=j.journal_id
left join published p on j.article_id=p.article_id
group by pub.pub_id