2017-07-05 21 views
1

LEFT OUTER JOINを副問合せすると、結合の特定の条件を満たす行のみが含まれます。SQL joinサブクエリーwhere条件

私はPPPDを数えたいと思います。converted_at IS NULLです。しかし、PPPD.converted_atがNULLの場合は、converted_atでnullの行を持つpatient_profilesしか含まれていないため、結果がより欲しくなります。代わりに、私はあなたがON句で条件を追加する必要がありますconverted_at = nullを

SELECT P.id, P.gender, P.dob, 
count(distinct recommendations.id) AS recommendation_count, 
count(distinct PPPD.id) AS community_submissions, 
FROM patient_profiles AS P 
LEFT OUTER JOIN recommendations ON recommendations.patient_profile_id = P.id 
LEFT OUTER JOIN patient_profile_potential_doctors AS PPPD ON PPPD.patient_profile_id = P.id 
WHERE P.is_test = FALSE 
GROUP BY P.id 

答えて

2

を持つすべてのPPPDレコードのカウントが欲しい:

SELECT P.id, P.gender, P.dob, 
     count(distinct r.id) AS recommendation_count, 
     count(distinct PPPD.id) AS community_submissions, 
FROM patient_profiles P LEFT OUTER JOIN 
    recommendations r 
    ON r.patient_profile_id = P.id LEFT OUTER JOIN 
    patient_profile_potential_doctors PPPD 
    ON PPPD.patient_profile_id = P.id AND PPPD.converted_at IS NULL 
WHERE P.is_test = FALSE; 
GROUP BY P.id