DISTINCT filtert nicht? SQL Abfrage falsch?
Ich möchte, dass alle die dem Administrator schreiben, bloß ein mal aufgelistet sind. Gibt es also mehr als einen Eintrag wo von
und nach
gleich sind, so soll dieser einfach ignoriert werden, wenn schon vorhanden. Ich dachte mit DISTINCT sollte das klappen da ich den Inhalt von "nach" filtere, jedoch werden mir trotz der Funktion alle Datensätze ausgegeben.
SQL:
SELECT DISTINCT `nach` , `von` , `datum`
FROM `nachrichten`
WHERE `nach` LIKE 'Administrator'
ORDER BY `datum` DESC



1 Antwort
Dein Fehler: DISTINCT bezieht sich auf alle Select-Felder -- also, wenn das Datum-Feld unterschiedliche Werte hat, dann werden all diese Sätze zurückgegeben.
Lösungsbeispiel:
SELECT `nach` , `von` , max(`datum`) , min(`datum`)
FROM `nachrichten`
WHERE `nach` LIKE 'Administrator'
GROUP BY `nach` , `von`
ORDER BY max(`datum`) DESC
Dann wusste ich wohl nicht so ganz wie man mir DISTINCT umgeht. Deine Lösung funktioniert aber echt gut. Danke dafür :)