Sortieren und Group BY

Du brauchst doch gar nicht den größten Datensatz abrufen, also MAX weglassen.

Versuch´mal das hier, ungetestet, da ich ja deine genaue DB-Struktur nicht weiß:

SQL:
SELECT m.`id` AS message_id,
 			    m.`text`,
				m.`sid`,
				m.`status`,
				u.`username` AS name,
				DATE_FORMAT(`date`,'%d.%m.%Y, %H:%i') AS shortdate,
				TIMESTAMPDIFF(SECOND,`date`,NOW()) AS sec
		FROM `messages` m LEFT JOIN `user`s u ON u.`id` = m.`sid`
		WHERE u.`uid` = '".$_SESSION['id']."' AND u.`uid`_delete='0'
		ORDER BY m.`id DESC
		LIMIT 1
 
Ich dachte du willst nur eine Mail angezeigt haben?

Dann nimm das "LIMIT 1" wieder raus, dann werden alle angezeigt
 
Nein, die aktuellste Mail je User, sortiert nach aktuellster Mail-ID je User.

Das heißt ich habe eine Übersicht (?site=messages):

name: x
nachricht: blabla.

name: y
nachricht: blablabla.

Aber hier hat z.B. der User mit dem Namen "x" bereits 10 Mails an mich geschickt. Es soll aber in dieser Übersichtsseite nur die aktuellste angezeigt werden. Also seine zuletztabgeschickte. Und es soll eben nach User-ID gruppiert werden.
 
Meld dich mal im ICQ, vielleicht kannste mir da das genauer erklären :-)

Oder sie beschreibt es hier genauer ;) Dann haben alle etwas davon.
So wie ich das verstanden hab, klickst man dann zum Beispiel auf Nachricht blabla von User x. Dann bekommt man alle angezeigt. Aber wie willst du alle angezeigt bekommen?
Möglichkeit 1: ?site=messages&msg_id =12345
Bei dieser Möglichkeit brauchst du die Nachrichten ja gar nicht alle in einem Query abholen, sondern machst es dann mit einem zweiten sobald die Nachricht angeklickt wurde.
Möglichkeit 2: Per Ajax
Auch bei dieser Möglichkeit, die im Prinzip das gleiche ist wie Möglichkeit 1, müsstest du einen zweiten Query benutzen.
Möglichkeit 3: Einen Div per JS einblenden.
Hier würde der Code, den du suchst Anwendung finden, allerdings stellt sich da die Frage ob man dann wirklich so viele Nachrichten (wenn auch unsichtbar) gleichzeitig in den Quelltext laden möchte.
 
Darum geht es mir ja gar nicht. Dass ich alle angezeigt bekomme, habe ich schon hinbekommen.

Es geht mir nur um die Übersicht! Das einzige Problem ist nur, dass falsch sortiert wird, wenn ich GROUP BY benutze. Aber ohne GROUP BY wird nicht nach User-ID sortiert und jede einzelne Mail angezeigt, aber dafür hab' ich - wie erwähnt - die jeweilige Extraseite. Und da funktioniert auch alles prima. Es geht jetzt nur um die Übersicht...

Leute, ich verzweifle noch...
 
Das habe ich auch schon probiert.

PHP:
$result = mysql_query("
SELECT DISTINCT m.`sid`, m.`id` AS message_id, m.`text`, m.`status`,
u.`username` AS name,
DATE_FORMAT(`date`,'%d.%m.%Y, %H:%i') AS shortdate, 
TIMESTAMPDIFF(SECOND,`date`,NOW()) AS sec
FROM `messages` AS m 
LEFT JOIN `users` AS u 
ON u.`id` = m.`sid` 
WHERE `uid`='".$_SESSION['id']."' AND `uid_delete`='0' 
GROUP BY m.`sid` 
ORDER BY m.`id` DESC");

So sieht die Query aktuell aus. Und wenn ich GROUP BY wegmache, werden wieder alle Einträge angezeigt.
Das einzige Problem bei GROUP BY ist "nur", dass die Sortierung der Nachrichtentexte total falsch ist. Jedoch nicht der User, die zuletzt eine Mail versandt haben.
 
Kannst du bitte den Aufbau der beiden Tabellen aus phpMyAdmin exportieren und hier posten? Am besten auch ein paar Inhalte.
Dann kann ich mir das mal genauer anschauen, weil so drehen wir uns hier ja irgendwie im Kreis. ;)
 
Zurück