Vinzenz Mai: MYSQL Abfrage über 366 Felder

Beitrag lesen

Hallo,

fast richtig. Es wird aber kein Datum eingetragen sondern nur der Wert 0 oder 1.
Wie kann ich die id der Zeile abfragen, in der mindestens eines der Felder _01_01 bis _31_12 nicht ller ist bzw. den Wert 1 hat?

wie frage ich ab, ob mindestens eines der Felder nicht leer ist?

  
-- Wenn alle Felder leer sind, das heißt den speziellen Wert NULL enthalten,  
-- dann liefert COALESCE() mit allen Spalten als Argument den Wert NULL zurück.  
-- ISNULL() liefert somit genau dann True zurück, wenn alle Spalten leer sind.  
-- NOT ISNULL liefert daher True zurück, wenn in mindestens einer Spalte ein  
-- von NULL verschiedener Wert steht.  
SELECT  
    [link:http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html#operator_not@title=NOT] [link:http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html#function_isnull@title=ISNULL](  
           [link:http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html#function_coalesce@title= COALESCE](  
            _01_01,  
            _01_02,  
            ...  
            _31_12  
        )  
    ) nicht_alle_leer  

Ob eines der Felder den Wert 1 hat kannst Du analog mit GREATEST() in Kombination mit über Deine Spaltenliste mit Anwendung der Funktion COALESCE() auf jede einzelne Spalte ermitteln.

Ach ja: sinnvoll ist das trotzdem nicht. Sinnvoll ist - wie Dir mehrfach nahegelegt - ein anderes Tabellendesign.

Sei ein Superheld und springe über Deinen Schatten!

Freundliche Grüße

Vinzenz