0

タイトルが私の問題に対して正しいかどうかはわかりません。例を挙げたほうがいいでしょう。

私は3つのテーブルを持っています:Publication、、。それらの列は次のようなものです。JournalPublished

    **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ますよね?

したがって、上記の2つのクエリを通じて、とを取得できthe number of articles that need to be publishedますthe number of articles that have been published

私の質問は、これら2つの数値を同時に取得する単一のクエリを作成する方法です。

これらの2つの番号を同じ表に表示する必要があります。

PS:私はMicrosoftSQLServerを使用しています

4

2 に答える 2

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 に答える
0

count(distinct ...)を追加して追加の行を追加しても、ジャーナルのカウントに使用できるのは1回だけjoinです。それはあなたがテーブルにあなたを可能にleft joinpublishedます:

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 に答える