sortieren vor GROUP

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

sortieren vor GROUP

Postby Meister_Max » 03. September 2006 19:47

Hallo, ich hab mal ne Frage, ich muss eine Abfrage so stellen das vor GROUP sortiert wird weil GROUP mir ja den ersten Datensatz aus einer Gruppe gibt und ich aber den letzten aus einer Gruppe haben will...
Ich hab dazu schon ins MySQL Referenzbuch geschaut aber nichts gefunden..

Das ganze mal an einem Beispiel
Code: Select all
id   | subid   | zeit      | info1   | info2   
--------------------------------------------------
0   | 1   | 1156581155   | sad   | sds..
1   | 1   | 1156581257   | asd   | set..
2   | 2   | 1156581325   | sb6   | srk..
3   | 1   | 1156581455   | lls   | Ade..
4   | 2   | 1156581555   | smr   | bds..
5   | 1   | 1156581655   | hod   | zdv..
6   | 3   | 1156581755   | hf,   | sds..
7   | 3   | 1156581855   | seb   | gds..
8   | 3   | 1156581955   | hve   | sgs..

Mein Query wäre jetzt

Code: Select all
SELECT *, count(id) as c FROM tabelle GROUP BY subid ORDER BY zeit desc


dann würd ich folgendes bekommen :
Code: Select all
id   | subid   | zeit      | info1   | info2   | c
--------------------------------------------------------
6   | 3   | 1156581755   | hf,   | sds..   | 3
2   | 2   | 1156581325   | sb6   | srk..   | 2
0   | 1   | 1156581155   | sad   | sds..   | 4

Aber ich brauch von jeder Gruppe, den spätesten eintrag, nicht den ersten..
dafür müsste der SQL befehl die Sortierung vornehmen bevor das GROUP erfolgt

mein ergebniss sollte so dann so sein :
Code: Select all
id   | subid   | zeit      | info1   | info2   | c
-----------------------------------------------------
8   | 3   | 1156581955   | hve   | sgs..   | 3
5   | 1   | 1156581655   | hod   | zdv..   | 4
4   | 2   | 1156581555   | smr   | bds..   | 2

Hat jemmand ne Idee wie der SQL befehl aussehen müsste ?
Meister_Max
 
Posts: 23
Joined: 26. August 2004 21:56

Postby Flominator » 04. September 2006 10:20

Da kommst du dann wohl an einer Subquery nicht vorbei:

SELECT tabelle. *
FROM (

SELECT count( id ) AS c, max( zeit ) AS mzeit
FROM tabelle
GROUP BY subid
ORDER BY zeit DESC
) AS subq
INNER JOIN tabelle ON subq.mzeit = tabelle.zeit
ORDER BY mzeit DESC
Lust auf Kommunikation?
Meinung über Musik vorhanden?
Text nicht verstanden?
Songtexte gesucht?

Dann besucht uns in der Songtexte-Community:
http://www.ramselehof.de/songtexte
User avatar
Flominator
 
Posts: 50
Joined: 30. August 2004 13:59
Location: Hinterzarten

Postby Meister_Max » 04. September 2006 12:49

macht er net..

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count( id ) AS c, max( zeit ) AS mzeit FROM tabelle GROU...

Ich habs schon öfters probiert, aber scheinbar mag das mysql von mir keine subquerys
Meister_Max
 
Posts: 23
Joined: 26. August 2004 21:56


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 43 guests