MySQL Abfrage langsam
bearbeitet von Regina Schaukrug> 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:
> > > ~~~sql
> > > 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](http://sql.lernenhoch2.de/lernen/sql-fortgeschritten/join-tabelle-zusammenfugen/left-join/)
Also:
~~~sql
SELECT COUNT(rechnungen.auftragid) as a1
FROM rechnungen
LEFT JOIN auftrag_info ON auftrag_info.auftragnr=rechnungen.auftragid
WHERE auftrag_info.auftragnr IS NULL
~~~
MySQL Abfrage langsam
bearbeitet von Regina Schaukrug> 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:
> > > ~~~sql
> > > 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](http://sql.lernenhoch2.de/lernen/sql-fortgeschritten/join-tabelle-zusammenfugen/left-join/)
MySQL Abfrage langsam
bearbeitet von Regina Schaukrug> 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 schon selbst Deine Tabellen durcheinander. Du hattest:
> > > ~~~sql
> > > 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](http://sql.lernenhoch2.de/lernen/sql-fortgeschritten/join-tabelle-zusammenfugen/left-join/)
MySQL Abfrage langsam
bearbeitet von Regina Schaukrug> 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.
Du hattest:
> > > ~~~sql
> > > 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 `auftrag_info.auftragnr` auf NULL prüfst...**
[Literatur](http://sql.lernenhoch2.de/lernen/sql-fortgeschritten/join-tabelle-zusammenfugen/left-join/)
> „Selektiere alles von der linken Tabelle, auch wenn in der rechten kein übereinstimmender Wert vorhanden ist.“