Ik heb twee tabellen (overbodige kolommen heb ik weggelaten)
Ik wil een query bouwen die het volgende resultaat geeft:
Alle advertenties die niet verwijderd zijn EN waar send_mail op 1 staat
+ Alle advertenties die niet verwijderd zijn EN waar de laatste mail een week geleden verzonden is.
Dit gedeelte is simpel:
Alle advertenties die niet verwijderd zijn EN waar send_mail op 1 staat.
Het tweede gedeelte toevoegen kom ik niet uit:
Alle advertenties die niet verwijderd zijn EN waar send_mail op 1 staat
+ Alle advertenties die niet verwijderd zijn EN waar de laatste mail een week geleden verzonden is.
Ik dacht hieraan
Deze query geeft natuurlijk doodleuk de advertenties weer waarvoor in de afgelopen week WEL een mail is verstuurd en die wil ik er juist uitfilteren. M.a.w. in dit geval slaat de LEFT OUTER JOIN nergens op... Ik kom er alleen niet uit hoe het wel moet. Wie kan me helpen?
code:
1
2
3
4
5
6
7
8
9
10
11
| advertisements | CREATE TABLE `advertisements` ( `id` int(11) NOT NULL AUTO_INCREMENT, `send_mail` tinyint(1) DEFAULT '0', `removed` tinyint(1) DEFAULT '0', } | mails | CREATE TABLE `dmca_mails` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mail_send_time` datetime DEFAULT NULL, `advertisement_id` int(11) DEFAULT '0', } |
Ik wil een query bouwen die het volgende resultaat geeft:
Alle advertenties die niet verwijderd zijn EN waar send_mail op 1 staat
+ Alle advertenties die niet verwijderd zijn EN waar de laatste mail een week geleden verzonden is.
Dit gedeelte is simpel:
Alle advertenties die niet verwijderd zijn EN waar send_mail op 1 staat.
code:
1
2
| SELECT `advertisements`.* FROM `advertisements` WHERE (send_mail = 1 AND removed = 0) |
Het tweede gedeelte toevoegen kom ik niet uit:
Alle advertenties die niet verwijderd zijn EN waar send_mail op 1 staat
+ Alle advertenties die niet verwijderd zijn EN waar de laatste mail een week geleden verzonden is.
Ik dacht hieraan
code:
1
2
3
4
| SELECT `advertisements`.* FROM `advertisements` LEFT OUTER JOIN mails ON advertisements.id = mails.advertisement_id AND mail_send_time < <7 DAGEN GELEDEN> WHERE (send_mail = 1 AND removed = 0) |
Deze query geeft natuurlijk doodleuk de advertenties weer waarvoor in de afgelopen week WEL een mail is verstuurd en die wil ik er juist uitfilteren. M.a.w. in dit geval slaat de LEFT OUTER JOIN nergens op... Ik kom er alleen niet uit hoe het wel moet. Wie kan me helpen?