Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

IF Statement im Select

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von LordExcalibur, 7 Oktober 2016.

  1. LordExcalibur

    LordExcalibur Benutzer

    Hallo,

    ich habe eine Frage zu einen SQL Statement.
    Ich habe eine Datenbank mit Verfügbarkeiten und zugehörigen Preisen.
    In der Tabelle können jedoch die Preisfelder leer sein. Ist das der Fall, soll ein Standardwert genommen werden.


    Tabelle Assets
    AssetID | Name | Preis | ....


    Tabelle Verfügbarkeit
    AssetID| Verfügbar | Preis


    Die Abfrage müsste nun so ähnlich aussehen:

    SELECT
    Asset.Name,
    Verfügbarkeit.Verfügbar,
    if Verfügbarkeit.Preis <> NULL then Verfügbarkeit.Preis else Assets.Preis
    FROM
    ....


    Das scheint so aber nicht zu funktionieren.
    Hat jemand einen Tip wie ich das machen kann?

    Viele Grüße
    Sebastian
     
  2. akretschmer

    akretschmer Datenbank-Guru

    coalesce() ist Dein Freund.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    demo:

    Code:
    test=# create table lordexcalibur(id int primary key, val int);
    CREATE TABLE
    test=*# insert into lordexcalibur values (1, NULL);
    INSERT 0 1
    test=*# insert into lordexcalibur values (2,2);
    INSERT 0 1
    test=*# select id, coalesce(val, 999) from lordexcalibur ;
     id | coalesce
    ----+----------
      1 |  999
      2 |  2
    (2 Zeilen)
    
    Statt dem hardcodierten Wert kannst auch eine andere Spalte nehmen:

    Code:
    test=*# select id, coalesce(val, id) from lordexcalibur ;
     id | coalesce
    ----+----------
      1 |  1
      2 |  2
    (2 Zeilen)
    
     
  4. ukulele

    ukulele Datenbank-Guru

Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden