Ik heb al heel wat uurtjes stuk gekeken op dit probleem, en ondanks dat er toch aardig wat informatie en topics op mijn onderwerp zijn, ben ik er na al die uren (zeg gerust een volle dag) niet uit gekomen.
Wat ik wil is volgens mij supersimpel, en ik snap dan ook niet wat ik fout doe en waarom ik er zelf niet uit kom. Kort gesteld: Ik heb 2 tabellen, usergegevens en een tabel met extra usergegevens, waar meerdere rijen per user zijn. Wat ik wil is alle gegevens van de tabel usergegevens selecteren, en de LAATSTE rij (order by datum) met gegevens selecteren van de extra usergegevens.
In eerste instantie dacht ik dat een order by extrausergegevens.date prima zou werken. Dat werkt op zich ook, maar niet meer nadat ik een group by invoeg (die doe ik op usergegevens.id). Dus ik heb ondertussen tig dingen geprobeert, waaronder:
Deze query geeft ALLEEN de records terug waar maar 1 records in extrausergegevens zit, de rest laat hij niet zien.
Haal ik HAVING weg haal, dan grouped hij alles van de eerste tabel keurig maar met de eerste rij van extrausergegevens, bij pakt dus de order niet mee. Wel heeft hij de juiste waarde van MAX(extrausergegevens.date), namelijk die van de laatste rij.
Voeg ik bij HAVING deze laatste waarde in extrausergegevens.date = 'valuevandemax' dan werkt hij goed. Pakt de juiste gegevens van usergegevens EN extrausergegevens. Maar ja, dat gaat natuurlijk niet werken...
Subselects die ik vaak in voorbeelden terug zag lijkt niet te werken, heb ik misschien een oude versie van MySQL? Hoe dan ook, ik kom er niet uit, dus advies is heel erg welkom!
Wat ik wil is volgens mij supersimpel, en ik snap dan ook niet wat ik fout doe en waarom ik er zelf niet uit kom. Kort gesteld: Ik heb 2 tabellen, usergegevens en een tabel met extra usergegevens, waar meerdere rijen per user zijn. Wat ik wil is alle gegevens van de tabel usergegevens selecteren, en de LAATSTE rij (order by datum) met gegevens selecteren van de extra usergegevens.
In eerste instantie dacht ik dat een order by extrausergegevens.date prima zou werken. Dat werkt op zich ook, maar niet meer nadat ik een group by invoeg (die doe ik op usergegevens.id). Dus ik heb ondertussen tig dingen geprobeert, waaronder:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| SELECT usergegevens.gegevensdieikwil, extrausergegevens.gegevensdieikwil, extrausergegevens.date, MAX(extrausergegevens.date) FROM usergegevens LEFT JOIN extrausergegevens ON usergegevens.id = extrausergegevens.user_id GROUP BY usergegevens.id HAVING extrausergegevens.date = MAX(extrausergegevens.date) ORDER BY usergegevens.id, MAX(extrausergegevens.date) DESC |
Deze query geeft ALLEEN de records terug waar maar 1 records in extrausergegevens zit, de rest laat hij niet zien.
Haal ik HAVING weg haal, dan grouped hij alles van de eerste tabel keurig maar met de eerste rij van extrausergegevens, bij pakt dus de order niet mee. Wel heeft hij de juiste waarde van MAX(extrausergegevens.date), namelijk die van de laatste rij.
Voeg ik bij HAVING deze laatste waarde in extrausergegevens.date = 'valuevandemax' dan werkt hij goed. Pakt de juiste gegevens van usergegevens EN extrausergegevens. Maar ja, dat gaat natuurlijk niet werken...
Subselects die ik vaak in voorbeelden terug zag lijkt niet te werken, heb ik misschien een oude versie van MySQL? Hoe dan ook, ik kom er niet uit, dus advies is heel erg welkom!