15. juni 2010 - 11:47Der er
4 kommentarer og 1 løsning
Problemer med Query
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`.
nu ved jeg ikke om du gør det sværere end det er, eller det er mig der ikke forstår dit spørgsmål, men hvis jeg forstår dig ret, skal du bare have de brugere ud, hvor de seneste 5 linjer har feltet read sat til 0?
altså alle 5 linjer skal have 0 i read og ikke kun nogle af dem, eller?
ja det troede jeg også, men efter jeg læste spørgsmålet igen, kunne jeg se at det var lidt mere indviklet :s
jeg har gået og tænkt over hvordan det kunne laves, men jeg ka sq ikke lige komme på noget uden at jeg synes det ville give for meget arbejde for serveren og for mange sql-kald og jeg er sikker på at det kan aves smartere med ren sql, jeg ved bare ikke hvordan. desværre.
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.