Wenn ein Feld leer ist, nimm ein anderes

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von Jakob, 14.09.2006.

  1. Jakob

    Jakob Thread Starter MacUser Mitglied

    Beiträge:
    1.066
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Hallo,

    kann man in MySQL oder allgemein in SQL sagen, dass wenn in einer Spalte das Feld leer ist oder einen bestimmten Wert aufweist, er eine andere Spalte auswerten soll?

    Also sowas:

    SELECT feld1 (if(feld1=="") then feld2) from tabelle;
     
  2. Pingu

    Pingu MacUser Mitglied

    Beiträge:
    4.894
    Zustimmungen:
    341
    MacUser seit:
    04.08.2003
    Man kann sich das in SQL sicherlich zusammenbauen: SELECT IF(LENGTH(feld1) > 0, feld1, feld2) .... Aber ehrlich gesagt, wenn das nötig ist, dann ist während der Normalisierung der DB etwas falsch gelaufen.

    Pingu

    PS: Bei solchen Sachen hilft auch gerne das Handbuch weiter: http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
     
  3. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    MacUser seit:
    25.07.2004
    @Jakob: Ich weiss nicht, wofür Du genau diese Funktionalität brauchst aber wäre es nicht eine mögliche Lösung, die Abfrage in einer while (...) {...} Schleife durchlaufen zu lassen und dann erst bei der Ausgabe auf leere Werte zu reagieren? Im Allgemeinen fragt man doch sowieso alle Felder ab...

    Nunja, kann ja sein, dass Du etwas ganz anderes machen willst.

    2nd
     
  4. Jakob

    Jakob Thread Starter MacUser Mitglied

    Beiträge:
    1.066
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Danke für den If-Tipp, auch wenn das wohl doch nicht funktioniert. Ich les mich noch bisschen ein.

    Zwischendurch hab ich es so wie 2nd gemacht. Ich dachte nur, dass es sinnvoller ist, gleich die DB zu beauftragen, adäquate Spalten auszusuchen.

    Und ich verbiete mir jegliches Nörgeln an meinen Normalisierungskünsten!
     
  5. imi

    imi MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    3
    MacUser seit:
    20.01.2005
    Für Nullvalue-Überprüfungen gibt es eigentlich bei jeder vernünftigen RDBMS eine entsprechende Funktion, die man benutzen sollte, anstatt sowas selbst auszuprogrammieren.

    Bei mySQL müsste es folgenderweise gehen:

    SELECT IFNULL(feld1,feld2) FROM ...

    Wenn Feld1 einen Nullwert aufweist, wird Feld2 als Wert genommen und ausgewiesen.
     
  6. imi

    imi MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    3
    MacUser seit:
    20.01.2005
    ...und wenn's keine nullvalues sind, die in der entsprechenden Spalte gespeichert sind, gibt es so ein lustiges CASE ... WHEN ... THEN, was man in ein Statement basteln kann.

    Das sieht dann so aus:

    SELECT
    CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
    END CASE AS columnname
    FROM
    tablename
     
Die Seite wird geladen...

Diese Seite empfehlen