Benutzerdefinierte Suche

Wenn ein Feld leer ist, nimm ein anderes

  1. Jakob

    Jakob Thread StarterMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    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;
     
    Jakob, 14.09.2006
  2. Pingu

    PinguMacUser Mitglied

    Mitglied seit:
    04.08.2003
    Beiträge:
    4.900
    Zustimmungen:
    341
    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
     
    Pingu, 14.09.2006
  3. 2nd

    2ndMacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    @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 StarterMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    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!
     
    Jakob, 14.09.2006
  5. imi

    imiMacUser Mitglied

    Mitglied seit:
    20.01.2005
    Beiträge:
    57
    Zustimmungen:
    3
    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

    imiMacUser Mitglied

    Mitglied seit:
    20.01.2005
    Beiträge:
    57
    Zustimmungen:
    3
    ...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...