MySQL: Feld auswählen, wenn leer dann anderes Feld..
sam nox
- datenbank
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.
$lang = "de";
$result = mysql_query("SELECTid
,text\_".$lang."
FROMtabelle
");
//mach was mit $result..
nu passt es... war nur ein ` (Schräg-Hochkomma) an der falschen Stelle.. ;) ..naja ..
Hi,
hilft sowas: SELECT IFNULL(text_de,text_en);
ciao
romy
Hi,
hilft sowas: SELECT IFNULL(text_de,text_en);
ciao
romy
Danke, funktioniert prima.
ciao ich!
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