GROUP BY med individuel LIMIT
Hey!Jeg er igang med at lave en query, som kan opdatere min kunde-mailliste med inaktive modtagere.
Til at starte med vil jeg SELECT'e de modtagere, som ikke har åbnet et af de seneste 5 breve. Jeg har et felt `read` = 1 betyder at modtageren har åbnet brevet. Jeg tror resten giver sig selv:
SELECT bruger_id, COUNT(*), SUM(`read`) FROM send_log s
LEFT JOIN maillist m ON m.id = s.bruger_id
WHERE m.inactive = 0
GROUP BY m.id
HAVING SUM(`read`) = 0 AND COUNT(*) > 5
Det virker sådan set. Dog tager det ikke høje for at det skal være de seneste 5 breve. Her vælges modtagere der har fået sendt over 5 breve og ikke har åbnet et eneste - hvilket ikke er det samme.
Derfor skal jeg kunne sortere og begrænse hver enkelt GROUP BY key, hvis det er muligt. Man kan sortere dem efter `time`.
Mvh
P