'hoort_bij' en 'datum' zijn kolomnamen. Deze horen dus niet (!) tussen quotes, of andere rommel, te staan. Doe je dat wel, dan behandel je dit als een string en wordt er dus niet gesorteerd op de waardes die in de kolom staan.
SELECT
*
FROM
forum_post
GROUP BY
hoort_bij
ORDER BY
datum DESC;
Oh, je bedoelt dat de datums niet kloppen die bij de resultaten staan? Dat heb je te danken aan MySQL, die gebruikt GROUP BY niet op de juiste manier.
Wellicht is het gebruik van het * in de query het probleem, haal uitsluitend de gewenste informatie op (benoem de velden) en gebruik evt. een subquery.
Ik weet niet of dit de oplossing is. Een echte oplossing is een betere database te gebruiken, bv. PostgreSQL.
Even wat uitleg over GROUP BY:
GROUP BY biedt de mogelijkheid objecten die door rijen in een tabel worden beschreven, aan de hand van bepaalde met elkaar overeenkomende eigenschappen als 1 groep te beschouwen en over deze groepen vragen te stellen. De groep wordt daarmee op zichzelf ook weer een object met eigenschappen.
Van zo'n groep mag in het resultaat van de query alleen iets worden opgenomen dat de groep als geheel beschrijft.
Dan jouw probleem: Jij wilt de meest recente datum opvragen van een record die in 1 groep staat. Dat kan dus nooit met de huidige query omdat de datum geen eigenschap van de hele groep, maar slechts van 1 record.
MySQL accepteert deze foute query helaas wel. Dat de uitkomst niet klopt, zal MySQL een rotzorg zijn...
Ik zal even in het probleem duiken en zoeken naar een oplossing.
Vraagje: Welke versie van MySQL gebruik je/gebruikt jouw hosting provider?
MIschien moet je anders even lezen wat FRank daarboven geschreven heeft. MYSQL doet maar wat met betrekking tot GROUP BY.
Let op GROUP BY
vroeger voor GROUP BY.
//ivm uitlijning
naam euries
klaas 3
jan 3
klaas 1
SELECT naam,SUM(euries) AS TOTAAL FROM tabel
klaas 7
jan 7
klaas 7
Nu met group by
SELECT naam,SUM(euries) AS TOTAAL FROM tabel GROUP BY naam
klaas 4
jan 3
Daar is GROUP BY voor en niet voor wat jij wilt. Dus GROUP BY wordt gebruikt icm een BEREKEND gegevens item, oftewel iets wat niet rechtstreeks uit de tabel komt.
Daarvoor gebruik je namelijk WHERE