Schrift
[thread]3373[/thread]

problem mit "group by" und "order by"



<< >> 8 Einträge, 1 Seite
Chris
 2003-11-12 13:28
#35698 #35698
User since
2003-09-10
17 Artikel
BenutzerIn
[default_avatar]
Hi,

ich möchte eine Tabelle auslesen es sollen aber keine doppelten Einträge vorhanden sein und das ganze soll dann noch sotiert werden.

so sieht die Datenbank aus:

Code: (dl )
1
2
3
4
5
6
id      themennr      thema      datum  
6         1             1         2003-11-10 17:32:39
7         1             1         2003-11-10 17:34:39
8         1             1         2003-11-10 17:34:27
9         2             2         2003-11-10 17:34:52
10        1             1         2003-11-10 17:37:56


ich habe es so probiert, funktionier aber nicht so wie ich mir das vorstelle:
Code: (dl )
SELECT themennr, thema FROM forum GROUP BY themennr ORDER BY datum DESC LIMIT 0, 5


als ergebnis erhalte ich:
thema 2
thema 1

soweit so gut, jedoch war der letzte eintrag bei thema 1 also sollte das Ergenis so aussehen:
thema 1
thema 2

wie macht man das nun am besten, dass das so sortiert wird?

MfG
Chris
JW
 2003-11-12 13:56
#35699 #35699
User since
2003-08-04
467 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Nimm mal das DESC am Ende raus.

edit: Ich glaube das hilft doch nicht. Es könnte sein, dass das Gruppieren schon den ersten Fund verwendet, und deswegen das Datum des 1. Eintrages benutzt wird und nicht des letzten.

edit2: Hast du einen Index über datum laufen? Wenn nicht, mach das mal.\n\n

<!--EDIT|JW|1068639084-->
Chris
 2003-11-12 14:51
#35700 #35700
User since
2003-09-10
17 Artikel
BenutzerIn
[default_avatar]
Quote
Es könnte sein, dass das Gruppieren schon den ersten Fund verwendet, und deswegen das Datum des 1. Eintrages benutzt wird und nicht des letzten.


daran wird es wahrscheinlich liegen, aber wie kann man es anstellen das das Datum des letzten Eintrages verwendet wird?

Quote
edit2: Hast du einen Index über datum laufen? Wenn nicht, mach das mal.


bringt leider auch nichts
jan10001
 2003-11-12 15:16
#35701 #35701
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Probier es mal damit, ich denke das sollte gehen.

Code: (dl )
1
2
3
4
SELECT themennr, thema, MAX(datum) AS datum
FROM forum
GROUP BY themennr
LIMIT 0, 5
\n\n

<!--EDIT|jan10001|1068643070-->
Chris
 2003-11-12 15:36
#35702 #35702
User since
2003-09-10
17 Artikel
BenutzerIn
[default_avatar]
ja, so gehts. man muss nur noch order by datum einfügen.
jan10001
 2003-11-12 15:44
#35703 #35703
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
ja, so gehts. man muss nur noch order by datum einfügen
Kannst du dir sparen, er sortiert doch schon nach datum, mit "MAX(datum) AS datum".
Chris
 2003-11-12 16:29
#35704 #35704
User since
2003-09-10
17 Artikel
BenutzerIn
[default_avatar]
er nimmt nur die größten werte in datum, aber wenn ich die absteigend sortiert haben möchte muss ich noch ein ORDER BY datum DESC reinpacken
jan10001
 2003-11-12 16:34
#35705 #35705
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Dann verändere das Max zu einen Min . :)
<< >> 8 Einträge, 1 Seite



View all threads created 2003-11-12 13:28.