2012-10-25 2 views
0

제목이 내 문제에 맞는지 잘 모르겠다. 예제를 제시하는 것이 좋습니다.sql - 서로 다른 수준의 참여에서 두 개의 서로 다른 개수를 선택하는 방법은 무엇입니까?

나는 세 테이블 : 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 

내가 각 pub_id 게시해야 저널의 total number of articles받을 수 있나요 그렇다면, 맞죠?

내가

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 

내가 바로 각 pub_id 게시해야 저널의 total number of published articles 얻을한다면?

위의 두 쿼리를 통해 the number of articles that need to be publishedthe number of articles that have been published을 얻을 수 있습니다.

제 질문은이 두 숫자를 동시에 얻는 단일 쿼리를 작성하는 방법입니다.

이 두 숫자를 같은 테이블에 표시해야합니다.

P.S : 나는 join을 추가하여 추가 여분의 행에도 불구하고, 당신은 한 번만 저널을 계산 count(distinct ...)을 사용할 수 있습니다

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 

답변

0

을 사용하고 있습니다. 그러면 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 
+0

예, 작동합니다. –

0

을 시도 마이크로 소프트 SQL 서버

+0

예, 작동합니다. 당신의 대답에 감사드립니다. 그러나 나는 그가 일찍 왔기 때문에 @podiluska 대답을 표시 할 것이다. 승인? –

+0

@ 잭슨. 저널 당 기사가 하나만있는 경우가 아니라면이 두 쿼리는 다릅니다. – RichardTheKiwi

+0

@RichardTheKiwi 아니, 저널마다 여러 개의 기사가 있습니다. '다름 '이란 무엇을 의미합니까? –

관련 문제