GROUP BY sorteer op eerste ipv laatste
Voorbeeld tabel:
Code (php)
1
2
3
4
5
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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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());
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:
in plaats van, dit zoals het moet worden:
Dus hij moet ook echt de laatste datum selecteren van de group by.
Iemand een oplossing?
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.
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.
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!
Quote:
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.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.
Maar goed lees die tutorial eens, dan zal het je duidelijk worden wat ik nu precies bedoel.