ich habe mir für eine Fragestellung mit Hilfe von Google einen Query zusammengebaut und würde nur gerne von jemandem bestätigt haben, dass dieser tut, was ich denke, da er recht wichtig ist und ich mir 100% sicher sein will.
Zur Datenbank (Minimalbeispiel, nur relevantes für Query):
Ich habe eine Tabelle person mit den Feldern person_id und job_type sowie eine Tabelle contact, die Kontakte zwischen Paaren von Personen modelliert und daher zwei Felder person1 und person2 enthält, die beide Fremdschlüssel sind und auf person.person_id gemappt werden können.
Zum Query:
Mich interessiert Folgendes: Wie viele Personen mit job_typ=x gibt es, die keinerlei Kontakte zu anderen Personen haben?
Ich muss also, um das näher an SQL auszudrücken, die Anzahl von Personen aus der person-Tabelle wissen, die weder im Feld contact.person1 noch im Feld contact.person2 vorkommen.
Hier mein aktueller Query:
SELECT count(person_id) FROM person as a WHERE job_type=3 AND NOT EXISTS (SELECT * FROM contact as b WHERE b.person1 = a.person_id OR b.person2 = a.person_id);
Also nochmal meine Frage:
Erfüllt der Query die oben beschriebene Aufgabe?
Ich würde eher zu EXCEPT greifen (2 Abfragen auf contact, je auf die 2 Spalten, daraus UNION bilden, und diese Menge sowie die erstere Tabelle mit EXCEPT verbinden und guggen, was rausfällt)