Vinzenz Mai: Distinct über Teil eines Feldes

Beitrag lesen

Hallo

Mit SELECT DISTINCT DATE_FORMAT(startdatum,'%Y-%m') AS startdatum FROM tabelle ORDER BY startdatum ASC klappt das auch grundsätzlich. Allerdings bekomme ich für jeden Eintrag in der DB, der _nicht_ das gleiche _vollständige_ Datum wie ein anderer Eintrag trägt, einen Datensatz zurück. Ich brauche aber nur jeweils _einen_ Datensatz pro Monat.

Nimm nicht DISTINCT, nimm GROUP BY, Du kannst in MySQL auch nach berechneten
Spalten gruppieren.

SELECT  
    DATE_FORMAT(t.startdatum, '%Y-%m') AS startdatum  
    -- in der Regel ist es keine gute Idee den Aliasnamen gleich einem  
    -- existierenden und verwendeten Spaltennamen zu wählen.  
FROM  
    tabelle t  
GROUP BY  
    DATE_FORMAT(t.startdatum, '%Y-%m')  
ORDER BY  
    startdatum

sollte es fürs erste tun.
Übrigens könntest Du auch gleich die Einträge zählen :-)

Freundliche Grüße

Vinzenz