sam nox: MySQL: Feld auswählen, wenn leer dann anderes Feld..

Hallo,

also ich hab beispielsweise:

+---+---------+---------+
| id| text_de | text_en |
+---+---------+---------+
| 1 | blahhh  | NULL    |
+---+---------+---------+
| 2 | NULL    | blub    |
+---+---------+---------+
| 3 | blahhh  | blub    |
+---+---------+---------+

So, das ist die Tabelle. Nun sieht man es gibt 3 Spalten.
Der Benutzer wählt vorher aus einer Auswahl (Deutsch/Englisch) aus.

Danach lese ich die Daten aus der Datenbank, möchte allerdings nicht text\_de und text\_en sondern eben nur die Spalter der beiden, je nachdem welche Sprache gewählt wurde.

Beispiel-PHP-Code:

//Verbingung herstellen spar ich mir mal ..

$lang = "de";
$result = mysql_query("SELECT id, text\_".$lang." FROM tabelle");
//mach was mit $result..

Soweit so gut, nur wie bekommt man hin, wenn nun Deutsch ausgewählt ist, aber im jeweiligen text\_de Feld nichts ist (NULL) ..das anstatt dessen dann das Feld text\_en zur Hand genommen wird? Was ich suche wär quasi sowas wie eine IF-Abfrage falls das betreffende text\_ Feld leer ist, dass halt das andere herangezogen wird.

Danke.

  1. $lang = "de";
    $result = mysql_query("SELECT id, text\_".$lang." FROM tabelle");
    //mach was mit $result..

    nu passt es... war nur ein ` (Schräg-Hochkomma) an der falschen Stelle.. ;)  ..naja ..

    1. Hi,

      hilft sowas: SELECT IFNULL(text_de,text_en);

      ciao
      romy

      --
      DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
      sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
      Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
      Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
      1. Hi,

        hilft sowas: SELECT IFNULL(text_de,text_en);

        ciao
        romy

        Danke, funktioniert prima.
        ciao ich!

  2. Hallo,

    Was ich suche wär quasi sowas wie eine IF-Abfrage falls das betreffende text\_ Feld leer ist, dass halt das andere herangezogen wird.

    Es gibt IF-Abfragen, aber genaues weiß ich nicht, habe das selbst erst kürzlich oberflächllich gelesen... Ich glaube allerdings, daß die nur mit Konstanten funktionieren (if(1>3) z.B.)

    sonst mach doch zwei Abfragen:

    SELECT text_de FROM tabelle WHERE IS NOT NULL (text_de )
    SELECT text_en FROM tabelle WHERE IS NULL (text_de)
    und beide dann zusammenfügen
    nagel mich jetzt nicht auf die Syntax fest, hab kein Buch dabei

    Gruß, Andreas