IF-Bedingung in Select-Abfrage
Frank Fischer
- php
Hallo,
im mySQL-Manual habe ich gesehen, dass es eine Möglichkeit geben soll in einer Select-Abfrage IF-Bedingungen einzubauen.
Ich würde da gerne folgendes machen, bekomme es aber nicht hin und die Beispiele im mySQL-Manual sind nicht so toll. Über die Suche hab ich auch nix passendes gefunden.
Meine Zielstellung:
Ich möchte die Select-Abfrage von dem Wert eines Datenbankeintrages abhängig machen.
Bsp:
SELECT wert,IF(wert=='j',1,2) FROM tabelle
Ich hoffe das ist verständlich, soll ja auch nur beispielhaft sein.
Im eigentlichen will ich nichts anderes als während der Abfrage einen gewissen Wert prüfen und davon dann abhängig machen was für Felder noch abgefragt werden.
mfg
ff
Hallo
Such mal nach WHERE ...
SELECT wert FROM tabelle WHERE wert == '1'
Grüße
Hallo
Such mal nach WHERE ...SELECT wert FROM tabelle WHERE wert == '1'
Hallo, where kenne ich, kann es allerdings hir nicht nutzen.
Um nochmal mehr ins detail zu gehen.
Ich habe eine recht komplexe Abfrage mit mehreren Tabellen und möchte über CONCAT Ergebnisse der unterschiedlichen Tabellen zusammenführen. Welche Ergebnisse ich zusammenführe hängt allerdings von dem Bedingungswert ab.
Also ehr so:
SELECT t1.bedingungswert,t2.wert1,t2.wert2,t2.wert3,IF(t1.bedingungswert=='j',CONCAT(t2.wert1,t2.wert2) as zusammen,CONCAT(t2.wert1,t2.wert3) as zusammen) FROM tabelle1 as t1, tabelle2 as t2
mfg
ff
SELECT t1.bedingungswert,t2.wert1,t2.wert2,t2.wert3,IF(t1.bedingungswert=='j',CONCAT(t2.wert1,t2.wert2) as zusammen,CONCAT(t2.wert1,t2.wert3) as zusammen) FROM tabelle1 as t1, tabelle2 as t2
IF(t1.bedingungswert=='j',CONCAT(t2.wert1,t2.wert2),CONCAT(t2.wert1,t2.wert3) ) as zusammen
IF(t1.bedingungswert=='j',CONCAT(t2.wert1,t2.wert2),CONCAT(t2.wert1,t2.wert3) ) as zusammen
DANKE
Ich habs zwischenzeitlich mit CASE gemacht, funktioniert auch.
IF(t1.bedingungswert=='j',CONCAT(t2.wert1,t2.wert2),CONCAT(t2.wert1,t2.wert3) ) as zusammen
Eine Berichtigung hätte ich hier.
Bei mir gings nur mit einem =, also
IF(t1.bedingungswert='j',CONCAT(t2.wert1,t2.wert2),CONCAT(t2.wert1,t2.wert3) ) as zusammen
mfg
ff
Im eigentlichen will ich nichts anderes als während der Abfrage einen gewissen Wert prüfen und davon dann abhängig machen was für Felder noch abgefragt werden.
Das geht nicht. if und case sind dazu gedacht, einen weiteren Wert im Ergebnis zu erzeugen, nicht, um je nach Bedarf mehr oder weniger Spalten auszuwählen.
Wahrscheinlich ist es im Gros der Fälle sowieso schneller, sechs Spalten komplett zu lesen, als zwei Spalten, dazu eine SQL-if-Bedingung und in Anwendung eine weitere Prüfung, welche Spalten zurückgegeben wurden, auszuführen.