2017-10-18 107 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