2016-12-15 8 views
0

複数のテーブルのIDに基づいてカウントを表示したいとします。二つのテーブルのためにそれが正常に動作しているが、3つのテーブルのために、これは左に変更結合クエリを使用して複数のテーブルからカウント(ID)を取得する方法

select r.req_id 
    , r.no_of_positions 
    , count(j.cand_id) as no_of_closure 
    , count(cis.cand_id) 
from requirement r 
join joined_candidates j 
    on r.req_id=j.req_id 
join candidate_interview_schedule cis 
    on cis.req_id=r.req_id 
where cis.interview_status='Interview Scheduled' 
group by r.req_id, r.no_of_positions; 
+0

結果が1つではないことを意味します。1 Where句の条件ですべてのデータが除外されます。結合が行われており、結合基準に一致するものが見つかりません。問題の内容を知るには十分な情報がありません。 where句の大文字と小文字の区別Where句を削除すると、カウント/結果が得られますか?もしそうなら、上の両方のピースとトリム? 'TRIM(UPPER(cis.interview_status))= UPPER( 'インタビュースケジュール')'参加について:3つのテーブルすべてにreq_IDが存在しますか?我々は2つのテーブルがどのように働いたのか分かりません。それは問題を分離するのに役立ちます。 – xQbert

+0

req_idはテーブルによって異なりますが、req_idとnullが表示されるようにしたいのですが、値が他のテーブルと一致しない場合は –

+0

2つのテーブルでLEFT結合を使用する必要があります。 2つのテーブルのうちの1つに存在していても、それはまだ表示されます。さらに、これらのテーブルに1:M relatioshipsがある場合は、パーティション上のカウントを使用する必要があるので、カウントが膨らんでしまいます。 – xQbert

答えて

0
  1. を包みなさい値doens'tが存在して参加する動作していない3つのテーブルのための私のクエリでデータ

    が表示されていません

  2. ウィンドウ関数を使用するように変更されたカウントで、人為的に結合によって膨らまされないようにしました
  3. left句として条件を結合するwhere句を移動した場合、NULL値を無効にして内部結合。

..MAYBE ...

SELECt r.req_id 
    , r.no_of_positions 
    , count(j.cand_id) over (partition by J.cand_ID) as no_of_closure 
    , count(cis.cand_id) over (partition by cis.cand_id) as no_of_CIS_CNT 
FROM requirement r 
LEFT join joined_candidates j 
    on r.req_id=j.req_id 
LEFT join candidate_interview_schedule cis 
    on cis.req_id=r.req_id 
and cis.interview_status='Interview Scheduled' 
GROUP BY r.req_id, r.no_of_positions; 

または多分...(私はj.cand_IDとcis.cand_IDが一意であると仮定できる場合)も1による人工数の増加を排除する:M結合

SELECt r.req_id 
    , r.no_of_positions 
    , count(distinct j.cand_id) as no_of_closure 
    , count(distinct cis.cand_id) as no_of_CIS_CNT 
FROM requirement r 
LEFT join joined_candidates j 
    on r.req_id=j.req_id 
LEFT join candidate_interview_schedule cis 
    on cis.req_id=r.req_id 
and cis.interview_status='Interview Scheduled' 
GROUP BY r.req_id, r.no_of_positions; 
+0

はい、問題が解決しました –

関連する問題