Bobby: if ($ausgabe['kat']==1) Abfrage in SELECT integrieren

Beitrag lesen

Moin

Hallo,

ich frage im Augenblick so meine mysql Datenbank ab: $sql =  "select id,nr,name,kat FROM duma";

Bei der Ausgabe in einer while Schleife, frage ich da noch mit

if ($ausgabe['kat']==1) $ausgabe['kat']='Stadt';

> > elseif($ausgabe['kat']==2) $ausgabe['kat']='Stadtteil';

etc...

.......................... 1 - Stadt 2 - Stadtteil 3 - Ort 4 - Markt 5 - Gemeinde 6 - Weiler

...........................

ab bevor ich diese entdlich ausgebe. Kann ich meine "if, elseif" Abfrage nicht schon in meine SELCT Abfrage packen.

Im Prinzip ja. Das Zauberwort heißt JOIN. Du legst eine zweite Tabelle an, die nur die zwei Spalten 'kat' und 'klartext' hat, und füllst sie mit genau den sechs Paaren, die du oben aufgezählt hast.

Eine Möglichkeit... es geht aber auch anders... Im MySQL kann man mit CASE arbeiten oder IF arbeiten....

z.B.:


SELECT  id,nr,name,CASE kat
      WHEN 1 THEN 'Stadt'
      WHEN 2 THEN 'Stadtteil'
      WHEN 3 THEN 'Ort'
      WHEN 4 THEN 'Markt'
      WHEN 5 THEN 'Gemeinde'
      WHEN 6 THEN 'Weiler'
      ELSE 'unbekannt'
    END kat FROM duma


Besser ist natürlich die Namen der Kategorien in eine eigene Tabelle zu bringen und dann via Kreuzprodukt oder eben auch JOIN zusammen zu bringen angenommen deine Tabelle für die Kategorien heißt 'kategorie' und hat die Felder id und name. Dann könntes so aussehen:


SELECT  duma.id, nr, name, duma.kat, kategorie.name
     FROM duma, kategorie WHERE katategorie.id = duma.kat


Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)