Hallo Allemaal,

Ik loop tegen een probleem aan en weet niet hoe ik dit moet oplossen.

select * from beoordeling WHERE groep = '16' GROUP BY id_talent ORDER BY datum

Hij laat nu 1 beoordeling zien van elk talent, dat is opzicht goed. Alleen de ORDER BY doet hij nu naar de GROUP waardoor ik niet de laaste datum krijg. DESC er achter zetten helpt ook niet.

Ik weet dus niet hoe ik er voor kan zorgen dat hij de laaste datum pakt van de beoordeling
Wat voor type is je datum veld?
SELECT * FROM beoordeling WHERE groep = '16' GROUP BY id_talent ORDER BY datum DESC

Zou volgens mij moeten werken.

Anders kijk ik even. Heb je een structuurdumpje dan?
Nee dit doet niet wat het zou moeten doen;


Kan je de structuurdump hier plaatsen, zodat ik die in kan laden?

[size=xsmall]Toevoeging op 01/02/2023 10:58:04:[/size]

Lol, de data zijn toch aflopend?
Ik moet de laatste datum hebben dus 2023-02-01 en wat ik ook doe krijg ik altijd 2023-01-31
De query werkt prima als je het aflopend selecteert. Als je oplopend wilt selecteren gebruik je ASC.

Of je past de datum toe in WHERE als je enkel die records wilt hebben.
Als ik SELECT * FROM beoordeling WHERE groep = '16' GROUP BY id_talent ORDER BY datum ASC uitvoer komt 1 regel naar voor met de datum 2023-01-31

Als ik SELECT * FROM beoordeling WHERE groep = '16' GROUP BY id_talent ORDER BY datum DESC uitvoer komt 1 regel naar voor met de datum 2023-01-31

Er blijft maar een verkeerde datum uitkomen.

@Ivo P, die GROUP BY is nodig om te zorgen dat er geen dubbele uitkomsten uit komen van het zelfde talent.

Nee, dat is een onhandige feature in MySQL om te raden wat je ongeveer zal hebben bedoeld. Zie het voorbeeld dat in dat linkje te vinden is over automerken en -typen.


SELECT talent_id, MAX(datum) AS laatstedatum
FROM beoordeling
WHERE groep = 16
GROUP BY talent_id


En als je nog meer velden dan talent_id wilt zien, moet je die zowel achter SELECT als achter GROUPBY plaatsen

Reageren