Problem mit einer MySQL Abfrage

xtramen01

Erfahrenes Mitglied
Hallo,

ich möchte mithilfe von 2 MySQL Tabellen die Kunden herausfinden welche noch keine Bestellungen getätigt haben.

Tabelle "customers" - Spalte "customers_id"
Tabelle "orders" - Spalte "customers_id"

Die Abfrage soll alle "customers_id" finden, die nicht in der Tabelle "orders" vorhanden sind.
Kann man das mit einer Abfrage lösen? Vielen Dank im voraus!

Gruß
 
SQL:
SELECT c.* FROM customers AS c WHERE c.customers_id NOT IN(SELECT o.customers_id FROM orders AS o GROUP BY o.id)
 
Ich glaube performance technisch sollte das nicht so groß den unterschied machen oder?
(Wo bei group by unter postgre sogar doch performance technisch bissl besser sein soll.)
 
Moin,

my 2 cents...

Sowhl GROUP BY wie auch DISTINCT können und werden in der Regel einen Extra-SORT-Prozess brauchen und damit langsamer sein.

Wobei das DISTINCT oben eh überflüssig ist.


Daher eher eine korrelierte Unterabfrage mit EXISTS
SQL:
SELECT c.* FROM customers AS c
WHERE NOT EXISTS (SELECT 1 FROM orders Where id=c.id)

Grüße
Biber
 
Zurück