Du kan bruge en rangforespørgsel mysql har ikke vinduesfunktioner til denne type resultater for at få n poster pr. gruppe, jeg vil ikke foreslå en group_concat
løsning fordi som articles
termer siger, at der kan være nok data og nemt ved at passere begrænsningen på 1024 tegn, hvis du øger denne grænse, er den også afhængig af max_allowed_packet
også
SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
FROM category c
JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
WHERE rownum <= 5
Ovenfor vil rangere hver artikel indenfor i dens kategorigruppe, du kan se resultatet af rownum
alias og i ydre forespørgsel filtrerer du blot resultaterne af artikler til 5 pr. kategorigruppe