MySql - IF

k3nguruh

Erfahrenes Mitglied
Hallo,

Ich möchte unterschiedliche Ergebniss-Spalten, je vorhandensein von a.id in einer Abfrage ausgeben. Am besten zeige ich es an einem Beispielen.

So ist es derzeit:
SQL:
SELECT
    IF(a.id, a.id, b.id) AS id,
    IF(a.id, a.datum, b.datum) AS datum,
    IF(a.id, a.txt, b.txt) AS txt,
    ........

Und so stelle ich mir das irgendwie vor... Wobei das Fragezeichen (?) jetzt von mir nur so als Trenner genommen wurde.
SQL:
SELECT
    IF( a.id, 
            ( a.id (?) a.datum (?) a.txt ),
            ( b.id (?) b.datum (?) b.txt )
    )
    ......

Ich hoffe es kommt verständlich rüber.
 
Zuletzt bearbeitet von einem Moderator:
Was soll den der Trenner da machen ? Ein Leerzeichen einfügen?

Grundsätzlich is dein IF() nicht falsch. Du solltes aber a.id auf NULL prüfen, auser es sei nur ein Boolean-Wert. ABer ID ist eigentlich eher eine nummer....

Ich geh mal davon aus, das a mit einem LEFT JOIN angehängt wurde. Dann ist IFNULL() etwas schönes
SQL:
    IFNULL(a.id, b.id) AS id,
    IFNULL(a.datum, b.datum) AS datum,
    IFNULL(a.txt, b.txt) AS txt,
 
Zuletzt bearbeitet von einem Moderator:
Hallo Yaslaw,

das mit IFNULL werde ich machen, wenn es besser ist ;)

Eigentlich sollte das 2. Bsp folgendes darstellen:
ich möchte nicht immer mit IFNULL(a.id,...) jede einzelne Spalte prüfen müssen. Deshalb habe ich gedacht, dass es irgend wie möglich ist 1x auf IFNULL prüfen, und bei TRUE ebend alle Spallten rein die bei a.id = NULL gebraucht werden, ansonsten halt Spalten xxxx.

Der Trenner ist nur da, da ich nicht weiß was da für ein Zeichen hin müsste, wenn diese Abfrage so funktionieren würde. Ein Kommata kann es ja eigentlich nicht sein, da dieses bereits verwendet wird.
Code:
IFNULL(.... , .... , .....)
 
Zurück