2017-10-18 2 views
1

Wie kann ich eine Unterabfrage nur für die Invite-Tabelle verwenden? Ich möchte alle Datensätze von patient_profiles und für die Einladung einladen, nur Datensätze zu verwenden, die nach einem bestimmten Datum erstellt wurden?SQL-Unterabfrage für mehrere Tabellen bei Unterabfragen

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  

Antwort

1

Sie benötigen keine Unterabfrage. Bewegen Sie einfach das Datum Zustand der ON Klausel:

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

Sie können HAVING verwenden.

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

dies alle Datensätze filtern erscheint basierend auf dem Datum, ich würde nur wie die Aufzeichnungen für COUNT(), um basierend auf dem Datum Klausel gefiltert werden – user2954587

Verwandte Themen