Regina Schaukrug: MySQL Abfrage langsam

Beitrag lesen

Nun möchte ich ALLE Rechnungen ausgeben lassen, bzw. die Menge ausgeben, wo noch nicht versandt wurde und eben in "rechnung_info" keine Zeile mit der Rechnungsnummer existiert.

Wie Felix schon schrieb bringst Du selbst Deine Tabellen durcheinander. Du hattest:

SELECT COUNT(rechnungen.auftragid) as a1
FROM rechnungen
LEFT JOIN auftrag_info ON auftrag_info.auftragnr=rechnungen.auftragid AND auftrag_info.status='1' 
WHERE auftrag_info.date IS NULL

Gemäß Deinem Ansinnen müssen alle Zeilen in auftrag_info „durchgechelt“ werden um zu checken, ob auftrag_info.date NULL ist, respektive die Zeile existiert. Ich frage mich schon mal, warum Du nicht sachangemessen auftrag_info.auftragnr auf NULL prüfst...

„Selektiere alles von der linken Tabelle, auch wenn in der rechten kein übereinstimmender Wert vorhanden ist.“

Literatur

Also:

SELECT COUNT(rechnungen.auftragid) as a1
FROM rechnungen LEFT JOIN auftrag_info
ON auftrag_info.auftragnr=rechnungen.auftragid
WHERE auftrag_info.auftragnr IS NULL