Ilja: Join über mehrere Tabellen/Suche nach Zuordnungen

Beitrag lesen

moin,

deine abfragen sind beide auch fachlich falsch, zumindestens nach dem was du als anforderung geschrieben hast.

1.Lösung

SELECT p.*
FROM People p
WHERE (SELECT COUNT(*)
       FROM Personfeature pf
       WHERE pf.person_id = p.id
      ) >= 2
;

2.Lösung

SELECT p.*
FROM People p
WHERE p.id IN (SELECT pf.id
               FROM Personfeature pf
               GROUP BY pf.person_id
               HAVING COUNT(*) > 1
              )
;

probiere beide aus, schaue welche schneller ausgeführt wird. indexe sollten allerdings auf den fremdschlüsseln liegen, wobei ich auch davon ausgehen, dass ein UNIQUE INDEX auf den spalten person_id und feature_id liegt.

Ilja