Ich habe zwei Tabellen A und B. A ist das Elternteil von B. Ich versuche, alle As zu finden, die kein bestimmtes B als Kind haben. Normalerweise würde ichSQL Auswahl von Zeilen und Ausschluss von Kindern
SELECT A.id FROM A WHERE A.id NOT IN (SELECT B.AId FROM B WHERE B.someFK = foo);
jedoch aus Leistungsgründen ich daran interessiert bin nicht eine innere wählen zu verwenden. Ich habe versucht, so etwas wie:
SELECT A.id FROM A LEFT JOIN B ON (A.id = B.AId) WHERE B.someFK != foo OR B.someFK IS NULL
Das Problem ist, diese wieder als der mehr als ein Kind hat, unabhängig davon, ob sie die angegebene B.
EDIT: B.id nach B geändert someFK
Whoops, dachte nicht, dass es einen Unterschied machen würde, aber B.id sollte B.someFK sein. Das bedeutet, dass As das ausgeschlossene Foo teilen kann. – Jim
sollten Sie das wahrscheinlich direkt in der Frage bearbeiten, damit es für neue Leser bemerkenswerter ist. – DMA57361
Sie sind neu in StackOverflow. Bitte akzeptiere eine Antwort, wenn dein Problem gelöst wurde. – Falcon