0

我不确定标题是否适合我的问题,我最好举个例子。

我有三个表: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 publishedand the number of articles that have been published

我的问题是如何编写一个查询来同时获取这两个数字?

我需要在同一张表中显示这两个数字。

PS:我正在使用 Microsoft SQL Server

4

2 回答 2

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
于 2012-10-25T10:06:28.943 回答
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
于 2012-10-25T10:03:59.720 回答