MySQL: Fallunterscheidung innerhalb eines Queries
bearbeitet von Rolf BHi(gh)!
Tabelle "kreis", Datenfelder "id", "name", "regierungsbezirk_id" und "bundesland_id". Da es längst nicht in allen Bundesländern Regierungsbezirke als Verwaltungsebene zwischen Kreis und Land gibt, andererseits bei vorhandenen Regierungsbezirken das Bundesland über die Tabelle "regbez" (für die Regierungsbezirke) ermittelt werden kann, darf entweder das Feld "regierungsbezirk_id" oder das Feld "bundesland_id" NULL sein (nicht aber beide zugleich!).
Das Problem ist jetzt: in der Datensatzausgabe (zur Orientierung für mich beim Eingeben, nicht als Endbenutzer-Ausgabe) wird der besseren Übersichtlichkeit halber nicht die aus "regbez" übernommene "id" angezeigt, sondern gleich der Klarname des Regierungsbezirks. Der dazu verwendete Query-String lautet:
SELECT kreis.id, kreis.name, regierungsbezirk_id, regbez.name, regbez.id, kreis.bundesland_id, land.name, land.id FROM kreis, regbez, land WHERE kreis.bundesland_id = land.id AND regierungsbezirk_id = regbez.id LIMIT ".$offset.", ".$range.";
Wird im Eingabeformular jedoch kein Wert für "regierungsbezirk_id" übermittelt, kann kein Datensatz ausgegeben werden, weil der zweite Teil der WHERE-Bedingung nicht erfüllt ist. Wie bringe ich jetzt dem Query mittels einer IF-Klausel bei, dass bei regierungsbezirk_id = NULL in der Spalte für den Regierungsbezirks-Klarnamen "(keiner)" angezeigt wird?
Bis bald im Khyberspace!
Yadgar