GROUP BY sorteer op eerste ipv laatste

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy Jansen

Davy Jansen

08/06/2008 10:16:00
Quote Anchor link
Group by sorteerd op de eerste datum, en niet op de laatste bekende datum.

Voorbeeld tabel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
id, naam, datum
100, Piet, 2008-06-08 10:08:46
101, Toon, 2008-06-08 10:08:52
102, Piet, 2008-06-08 10:08:59
103, Piet, 2008-06-08 10:09:14

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$totaal_query = mysql_query("

     SELECT MAX(id) AS laatsteid,
        tbl_user.user_id,
        tbl_user.teamname,
        tbl_statistieken.laatstbezocht,
        tbl_statistieken.url
     FROM tbl_user
     LEFT JOIN tbl_statistieken
        ON( tbl_user.user_id = tbl_statistieken.user_id )
     GROUP BY tbl_user.user_id
     ORDER BY laatsteid DESC

 ") or die(mysql_error());


Nu krijg ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Piet, 2008-06-08 10:08:46
Toon, 2008-06-08 10:08:52

in plaats van, dit zoals het moet worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Toon, 2008-06-08 10:08:52
Piet, 2008-06-08 10:09:14


Dus hij moet ook echt de laatste datum selecteren van de group by.

Iemand een oplossing?
 
PHP hulp

PHP hulp

22/12/2024 05:22:39
 
Joren de Wit

Joren de Wit

08/06/2008 10:21:00
Quote Anchor link
Dit komt omdat jouw query zo ongeldig is als maar kan, dit illustreert precies het verkeerde gebruik van een GROUP BY.

Je loopt nu tegen het probleem aan dat MySQL je query wel accepteert en gewoon gaat gokken welke resultaten jij wilt hebben. Dat dat in 99 van de 100 gevallen de verkeerde resultaten zijn, maakt MySQL verder niet uit. Dat is jouw probleem...

GROUP BY: Het juiste gebruik ervan

Lees deze tutorial maar eens door, dan zie je wat je verkeerd doet en hoe je een GROUP BY wel hoort te gebruiken.
 
Davy Jansen

Davy Jansen

08/06/2008 10:30:00
Quote Anchor link
Je doelt denk ik op dat ik die MAX er tussen heb gezet, zodat er nu 'tijdelijk' maar 1 waarde in group by is komen te staan. En bij de order by, eigenlijk geen waarde, omdat die MAX waarde niet betrouwbaar is.

Dit was mijn laatste hoop actie, en die was dus ook mislukt, logisch.
Maar het ik heb het nu veel simpelere opgelost met een 2de query, want in dit geval geen groot probleem was.

Thankxs.
 
Frank -

Frank -

08/06/2008 10:36:00
Quote Anchor link
Waarom gebruik je dan geen MAX(datum) ? Vervolgens de juiste GROUP BY opgeven en klaar is kees.

Ik heb niet de indruk dat jouw huidige aanpak de juiste is, je hebt zelfs de database nog niet eens goed geconfigureerd... En dat is altijd al onmisbaar, maar bij MySQL zelfs bittere noodzaak om zelfs maar correcte resultaten retour te krijgen!
 
Joren de Wit

Joren de Wit

08/06/2008 11:00:00
Quote Anchor link
Quote:
Je doelt denk ik op dat ik die MAX er tussen heb gezet, zodat er nu 'tijdelijk' maar 1 waarde in group by is komen te staan.
Nee dat bedoel ik niet. Ik bedoel dat je de GROUP BY op een onjuiste manier gebruikt, deze bevat namelijk niet alle kolommen die in je SELECT clause voorkomen. En dat is nou eenmaal een voorwaarde.

Maar goed lees die tutorial eens, dan zal het je duidelijk worden wat ik nu precies bedoel.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.