Vinzenz Mai: (MySQL) Problem bei Abfrage über mehrere Tabellen (Klaus)

Beitrag lesen

Hallo Klaus,

Die Abfrage funktioniert prima, wenn immer ein Erfasser und auch ein Bearbeiter angegeben sind.
Leider trifft das auf letzteres nicht immer zu und im Feld Bearbeiter steht (noch) eine Null.

steht da die Zahl 0 oder der spezielle Wert NULL?

Da in der Personen-Tabelle leider auch zahlreiche Einträge ohne Personalnummer geführt werden, werden nun alle diese Einträge aufgelistet.

Wie kann ich die Abfrage dahingehend abändern, dass nur der erste gefundene genommen wird oder die Suche erst gar nicht durchgeführt wird, wenn Bearbeiter noch Null enthält?

Das hört sich danach an, als stände da die Zahl 0, wahrscheinlich der Standardwert für diese Spalten. Wenn dies so ist, dann sollte es folgende Vorgehensweise tun:

Lege ein Backup der Datenbank an.
Lasse in diesen Spalten NULL-Werte zu.
Ändere alle Einträge in diesen Spalten, die den Wert 0 haben zu NULL ab.

Der Vergleich von NULL = NULL liefert nicht TRUE sondern NULL zurück, deswegen sollten danach Deine LEFT JOINs das gewünschte Resultat liefern.

Gibt es jedoch (selten dämliche) Anwendungen, die sich darauf verlassen, dass da eine Zahl drin steht, dann darfst Du so nicht vorgehen, in diesem Fall könntest Du Deine Abfrage dahingehend modifizieren, dass Du 0 speziell berücksichtigst.

Freundliche Grüße

Vinzenz