Fazit: Zu versendende Mails um mehr als 90% reduziert und nur noch eine Mail pro Kunde
Neues Mailing an Gruppe und zwei Admin-Accounts
Moderator: mirko
Ja 2 Admins können die Listen nicht untereinander anschauen.1. Wenn wir 2 Admin-Accounts anlegen, können diese nicht auf die Mailinglisten des jeweils anderen zugreifen - ist dieses so korrekt?
Stimmt es muss ein LEFT JOIN sein, muss ich mal in dem anderen Beitrag die Datei noch austauschen.2. Testweise haben wir nun einmal 13 Benutzer und 4 Gruppen angelegt. Hier scheint es ein kleines Problem mit der SQL-Abfrage zu geben - Beschreibung im Folgenden.
..........
Hallo,
wir haben neulich den Superwebmailer erworben und eingerichtet.
Nun haben wir zwei kleine Fragen...
1. Wenn wir 2 Admin-Accounts anlegen, können diese nicht auf die Mailinglisten des jeweils anderen zugreifen - ist dieses so korrekt?
2. Testweise haben wir nun einmal 13 Benutzer und 4 Gruppen angelegt. Hier scheint es ein kleines Problem mit der SQL-Abfrage zu geben - Beschreibung im Folgenden.
Benutzer B1 - B13
Gruppen G1 - G4
Die Aufteilung sieht wie folgt aus:
G1 : B1 - B13 (alle Benutzer)
G2 : leer
G3 : leer
G4 : B1
Soeben haben wir das aktuelle Skript \"campaigntools.inc.php\" eingefügt (siehe vorheriger Beitrag im Forum), wodurch nun immerhin keine 156 Mail mehr versendet werden sollten
Wenn wir nun ein Mailing an G4 erzeugen, sollen laut System insgesamt 13 Mails versendet werden - korrekt wäre jedoch 1 Mail.
Genutzte SQL-Anfrage lt. Supermailer:
SELECT DISTINCT `exampleMailingList_members`.`u_EMail`, `exampleMailingList_members`.*, IF(`exampleMailingList_members`.`u_Birthday` <> \'0000-00-00\', YEAR( CURRENT_DATE() ) - YEAR( `exampleMailingList_members`.`u_Birthday`), 0) AS `MembersAge` FROM `exampleMailingList_members`
LEFT JOIN `torben_globalblocklist` ON `torben_globalblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
LEFT JOIN `exampleMailingList_localblocklist` ON `exampleMailingList_localblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
RIGHT JOIN `exampleMailingList_maillisttogroups` ON `exampleMailingList_members`.`id`=`exampleMailingList_maillisttogroups`.`Member_id`
LEFT JOIN `1kontaktaufnahmebetatester_groups` ON `1kontaktaufnahmebetatester_groups`.`ml_groups_id`=`exampleMailingList_maillisttogroups`.groups_id
WHERE (`exampleMailingList_members`.`IsActive`=1 AND `exampleMailingList_members`.`SubscriptionStatus`<>\'OptInConfirmationPending\')
AND (`torben_globalblocklist`.`u_EMail` IS NULL AND `exampleMailingList_localblocklist`.`u_EMail` IS NULL)
AND (`1kontaktaufnahmebetatester_groups`.`ml_groups_id`=4)
Korrekt wäre hier (lt. Kurz-Test in MySql):
SELECT DISTINCT `exampleMailingList_members`.`u_EMail`, `exampleMailingList_members`.*,
IF(`exampleMailingList_members`.`u_Birthday` <> \'0000-00-00\', YEAR( CURRENT_DATE() ) - YEAR( `exampleMailingList_members`.`u_Birthday`), 0) AS `MembersAge` FROM `exampleMailingList_members`
LEFT JOIN `torben_globalblocklist`
ON `torben_globalblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
LEFT JOIN `exampleMailingList_localblocklist`
ON `exampleMailingList_localblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
LEFT JOIN `exampleMailingList_maillisttogroups`
ON `exampleMailingList_members`.`id`=`exampleMailingList_maillisttogroups`.`Member_id`
LEFT JOIN `1kontaktaufnahmebetatester_groups`
ON `1kontaktaufnahmebetatester_groups`.`ml_groups_id`=`exampleMailingList_maillisttogroups`.groups_id
WHERE( `exampleMailingList_members`.`IsActive`=1
AND `exampleMailingList_members`.`SubscriptionStatus`<>\'OptInConfirmationPending\'
)
AND
(
`torben_globalblocklist`.`u_EMail` IS NULL AND `exampleMailingList_localblocklist`.`u_EMail` IS NULL
)
AND
(
`1kontaktaufnahmebetatester_groups`.`ml_groups_id`=4
)
Es bräuchte also nur der \"RIGHT JOIN\" gegen einen \"LEFT JOIN\" ausgetauscht werden....
Viele Grüße,
Torben
wir haben neulich den Superwebmailer erworben und eingerichtet.
Nun haben wir zwei kleine Fragen...
1. Wenn wir 2 Admin-Accounts anlegen, können diese nicht auf die Mailinglisten des jeweils anderen zugreifen - ist dieses so korrekt?
2. Testweise haben wir nun einmal 13 Benutzer und 4 Gruppen angelegt. Hier scheint es ein kleines Problem mit der SQL-Abfrage zu geben - Beschreibung im Folgenden.
Benutzer B1 - B13
Gruppen G1 - G4
Die Aufteilung sieht wie folgt aus:
G1 : B1 - B13 (alle Benutzer)
G2 : leer
G3 : leer
G4 : B1
Soeben haben wir das aktuelle Skript \"campaigntools.inc.php\" eingefügt (siehe vorheriger Beitrag im Forum), wodurch nun immerhin keine 156 Mail mehr versendet werden sollten
Wenn wir nun ein Mailing an G4 erzeugen, sollen laut System insgesamt 13 Mails versendet werden - korrekt wäre jedoch 1 Mail.
Genutzte SQL-Anfrage lt. Supermailer:
SELECT DISTINCT `exampleMailingList_members`.`u_EMail`, `exampleMailingList_members`.*, IF(`exampleMailingList_members`.`u_Birthday` <> \'0000-00-00\', YEAR( CURRENT_DATE() ) - YEAR( `exampleMailingList_members`.`u_Birthday`), 0) AS `MembersAge` FROM `exampleMailingList_members`
LEFT JOIN `torben_globalblocklist` ON `torben_globalblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
LEFT JOIN `exampleMailingList_localblocklist` ON `exampleMailingList_localblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
RIGHT JOIN `exampleMailingList_maillisttogroups` ON `exampleMailingList_members`.`id`=`exampleMailingList_maillisttogroups`.`Member_id`
LEFT JOIN `1kontaktaufnahmebetatester_groups` ON `1kontaktaufnahmebetatester_groups`.`ml_groups_id`=`exampleMailingList_maillisttogroups`.groups_id
WHERE (`exampleMailingList_members`.`IsActive`=1 AND `exampleMailingList_members`.`SubscriptionStatus`<>\'OptInConfirmationPending\')
AND (`torben_globalblocklist`.`u_EMail` IS NULL AND `exampleMailingList_localblocklist`.`u_EMail` IS NULL)
AND (`1kontaktaufnahmebetatester_groups`.`ml_groups_id`=4)
Korrekt wäre hier (lt. Kurz-Test in MySql):
SELECT DISTINCT `exampleMailingList_members`.`u_EMail`, `exampleMailingList_members`.*,
IF(`exampleMailingList_members`.`u_Birthday` <> \'0000-00-00\', YEAR( CURRENT_DATE() ) - YEAR( `exampleMailingList_members`.`u_Birthday`), 0) AS `MembersAge` FROM `exampleMailingList_members`
LEFT JOIN `torben_globalblocklist`
ON `torben_globalblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
LEFT JOIN `exampleMailingList_localblocklist`
ON `exampleMailingList_localblocklist`.`u_EMail` = `exampleMailingList_members`.`u_EMail`
LEFT JOIN `exampleMailingList_maillisttogroups`
ON `exampleMailingList_members`.`id`=`exampleMailingList_maillisttogroups`.`Member_id`
LEFT JOIN `1kontaktaufnahmebetatester_groups`
ON `1kontaktaufnahmebetatester_groups`.`ml_groups_id`=`exampleMailingList_maillisttogroups`.groups_id
WHERE( `exampleMailingList_members`.`IsActive`=1
AND `exampleMailingList_members`.`SubscriptionStatus`<>\'OptInConfirmationPending\'
)
AND
(
`torben_globalblocklist`.`u_EMail` IS NULL AND `exampleMailingList_localblocklist`.`u_EMail` IS NULL
)
AND
(
`1kontaktaufnahmebetatester_groups`.`ml_groups_id`=4
)
Es bräuchte also nur der \"RIGHT JOIN\" gegen einen \"LEFT JOIN\" ausgetauscht werden....
Viele Grüße,
Torben
Zuletzt geändert von tBlanken am 09.07.2009, 21:10, insgesamt 2-mal geändert.