Wenn ein Feld leer ist, nimm ein anderes

Diskutiere mit über: Wenn ein Feld leer ist, nimm ein anderes im Datenbanksysteme für das Web Forum

  1. Jakob

    Jakob Thread Starter MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    Registriert 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
    Registriert 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
    Registriert 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.067
    Zustimmungen:
    21
    Registriert 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
    Registriert 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
    Registriert 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...
Ähnliche Themen - Wenn ein Feld Forum Datum
phpMyAdmin: keine Anzeige in Bit-Feld Datenbanksysteme für das Web 27.04.2010
Ein Bild in MySQL speichern Datenbanksysteme für das Web 23.02.2006
Simples "wenn-sonst" Problem in Filemaker 7 Datenbanksysteme für das Web 09.08.2005

Diese Seite empfehlen

Benutzerdefinierte Suche