Apart limiet voor elke waarde
Ja, vage topictitel.
Ik ben momenteel bezig aan een nieuwssysteem met meerdere categorieën. Elk artikel kan in één categorie tegelijk zitten. Tot zover eenvoudig.
Nu wil ik graag een overzichtje met uit elke categorie de laatste vijf nieuwsberichten. Prima. Maar wel graag met één query. Ik begon zelf heel enthousiast met het volgende:
En toen liep ik vast. Ik wil nu eigenlijk voor elk cat_id een soort groep met een eigen limit. Ik wil namelijk van elke waarde voor cat_id vijf rijen hebben.
Kan iemand me hiermee helpen? Is het bijvoorbeeld mogelijk de group-functie te gebruiken met een trucje?
Ik ben momenteel bezig aan een nieuwssysteem met meerdere categorieën. Elk artikel kan in één categorie tegelijk zitten. Tot zover eenvoudig.
Nu wil ik graag een overzichtje met uit elke categorie de laatste vijf nieuwsberichten. Prima. Maar wel graag met één query. Ik begon zelf heel enthousiast met het volgende:
Code (php)
1
2
3
4
2
3
4
SELECT n.news_id, n.news_title, n.cat_id
FROM news n
LEFT JOIN categories c ON c.cat_id = n.cat_id
ORDER BY n.cat_id, n.news_date
FROM news n
LEFT JOIN categories c ON c.cat_id = n.cat_id
ORDER BY n.cat_id, n.news_date
En toen liep ik vast. Ik wil nu eigenlijk voor elk cat_id een soort groep met een eigen limit. Ik wil namelijk van elke waarde voor cat_id vijf rijen hebben.
Kan iemand me hiermee helpen? Is het bijvoorbeeld mogelijk de group-functie te gebruiken met een trucje?
Gewijzigd op 01/01/1970 01:00:00 door Herjan -
Gesponsorde koppelingen:
Dit zul je met een sub-query moeten doen, maar omdat je een LIMIT nodig hebt, gaat dat niet lukken met MySQL. Die staat geen LIMIT toe in een sub-query...
Wanneer je MySQL 5 gebruikt, kun je stored procedure schrijven en daarin alles afhandelen, anders zul je gewoon 5 aparte queries naar de database moeten sturen met iedere keer een andere voorwaarde.
Ps. GROUP BY is geen oplossing, je wilt namelijk details van records in een groep opvragen. En dat gaat niet, met GROUP BY vraag je details van de hele groep op.
Wanneer je MySQL 5 gebruikt, kun je stored procedure schrijven en daarin alles afhandelen, anders zul je gewoon 5 aparte queries naar de database moeten sturen met iedere keer een andere voorwaarde.
Ps. GROUP BY is geen oplossing, je wilt namelijk details van records in een groep opvragen. En dat gaat niet, met GROUP BY vraag je details van de hele groep op.
Ok, het makkelijkste in MySQL is dus om gewoon een aantal losse queries uitvoeren, per categorie eentje. Jammer, ik wilde het graag in één query doen ;)



