Frage von derhierxD, 36

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 
Antwort
von nemtudomka, 30

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

Kommentar von derhierxD ,

Dann wusste ich wohl nicht so ganz wie man mir DISTINCT umgeht. Deine Lösung funktioniert aber echt gut. Danke dafür :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten