2017-10-18 80 views
1

如何才能將子查詢用於邀請表?我希望patient_profiles的所有記錄和邀請加入只使用特定日期後創建的記錄?SQL多表連接子查詢

SELECT p.first_name, 
COUNT(invites.invited_by_id)as invite_count 
FROM patient_profiles AS p 
LEFT OUTER JOIN patient_profiles AS invites ON invites.invited_by_id = p.id 
WHERE p.is_test = false AND AND invites.created_at >= '2017-10-16'::date 
GROUP BY p.first_name  

回答

1

你不需要子查詢。剛剛轉會日期條件的ON條款:

SELECT p.first_name, 
     COUNT(invites.invited_by_id)as invite_count 
FROM patient_profiles p LEFT OUTER JOIN 
    patient_profiles invite 
    ON invites.invited_by_id = p.id AND invites.created_at >= '2017-10-16'::date 
WHERE p.is_test = false 
GROUP BY p.first_name; 
0

您可以使用HAVING

SELECT p.first_name, COUNT(invites.invited_by_id)as invite_count 
FROM patient_profiles p 
GROUP BY p.first_name 
HAVING p.is_test = false AND p.created_at >= '2017-10-16'::date 
+0

這似乎根據日期來過濾所有記錄,我只喜歡記錄COUNT()將根據日期過濾條款 – user2954587