Yadgar: MySQL: Fallunterscheidung innerhalb eines Queries

Beitrag lesen

Hi(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.";

(Edit Rolf B: Query lesbar(er) gemacht)

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