Avatar billede pitzen Nybegynder
10. juni 2010 - 11:09 Der er 1 løsning

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
Avatar billede pitzen Nybegynder
29. juni 2010 - 18:38 #1
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester