Auge: Distinct über Teil eines Feldes

Beitrag lesen

Hallo

Das Thema (Select, Distinct über Teil eines Feldes) hatten wir ja in der letzten Woche schon mehrfach. Es wurde immer darauf hingewiesen, dass die Datenstruktur zu atomisieren sei.

Bei mir geht es darum, aus einer Tabelle mit Datumsangaben herauszulesen, ob es für einem Monat Einträge gibt. Das Datum (im Format JJJJ-MM-DD angegeben) weiter zu atomisieren ergibt keinen Sinn. Also versuche ich aus den gegebenen Daten das gewünschte herauszubekommen. Da ich in diesem Zusammenhang den Tag eines Eintrags nicht brauche, dachte ich mir, schneide ihn ab, so dass nur noch Angaben zu Jahr und Monat herauskommen (JJJJ-MM).

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.

Das könnte ich hernach über eine Filterung des Array per PHP (array_unique) erreichen. Ich würde es aber lieber dem DBMS (MySQL Version 5.0.27) überlassen, weiß aber nicht weiter. Die Umformatierung des Datums erfolgt ganz offensichtlich erst, nachdem Distinct nach mehreren Einträgen pro Datum gefiltert hat. Mir schwob dies andersherum vor, erst umformatieren (DATE_FORMAT()), dann filtern DISTINCT.

Geht das oder bin ich auf dem Holzweg?

Tschö, Auge

--
Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
(Victor Hugo)
Veranstaltungsdatenbank Vdb 0.2