Seite 1 von 1

Abgleich von 2 Datenbanken

Verfasst: 25. Mai 2020 19:24
von heja
Hallo,

wir nutzen für Newsletterversand ein externes System.
Aktuell ist die Anmeldung zum Newsletter über den Shop oder während des checkouts möglich, dabei wird die DB des Shops verwendet. Im Laufe des Tages erfolgt dann ein Abgleich der beiden DBs (also Shop DB zu Newsletter-Programm DB). Dies wird durch das Newsletterprogramm iniziiert und hat dabei folgende SQL-Anweisung

SELECT * FROM tnewsletterempfaenger WHERE nAktiv = 1

Also werden nur die Empfänger genommen, die den Newsletter beim double-opt-in bestätigt haben.

Abmeldung kann dann über Shop erfolgen oder bei Versand des Nesletters.
Wenn die Abmeldung über den Newsletter erfolgt fliegt der Empfänger aus der Empfängerliste raus.
Meldet sich ein Kunde aber direkt im Shop ab, so erfolgt kein Abgleich der beiden Datenbanken und der abgemeldete Empfänger würde weiter den Newsletter erhalten.
Ein vorheriges komplettes Löschen der Empfänger aus der Newsletter DB mit anschließendem Neuimport ist dahergehend nicht gut, da dann die eindeutige ID für die Abmeldung nicht mehr passt und es so zu einer Fehlermeldung kommen würde.

Meine Idee wäre jetzt, ist es möglich die obige Anweisung so zu erweitern, dass der Abgleich so stattfindet, dass alle Empfänger die in der Newsletter DB sind und nicht in der Shop DB (natürlich bezogen auf den Eintrag Newsletter) rausfliegen.
Natürlich soll auch weiterhin die erste Anweisung erhalten bleiben, also nur Empfänger die dem Newsletterversand zugestimmt haben sollen auch importiert werden.

Ist so was möglich und wie könnte eine entsprechende Anweisung aussehen (da kenn ich mich nicht aus).


Danke und schönen Abend

Re: Abgleich von 2 Datenbanken

Verfasst: 25. Mai 2020 19:40
von Baam
Mach bei der Abmeldung vom Newsletter doch den State nAktiv = 0 und lösch die Mailadresse bzw. ersetz sie durch einen Dummy. Zuordnung kann dann weiter über die eindeutige ID erfolgen. Und dann halt im Newesletter Tool ein DELETE * FROM newsletter as nl LEFT JOIN tnewsletterempfaenger as tn ON tn.Eindeutigeid = nl.Eindeutiegeid WHERE tn.nAktiv = 0.

Re: Abgleich von 2 Datenbanken

Verfasst: 25. Mai 2020 20:15
von marcibet
Beide Datenbanken / Tabellen sind am selben sql/MySQL Server? sehe ich das richtig dass in der DB vom Shop nur die Abmeldungen gespeichert sind? Und in der Newsletter DB die Anmeldungen? Falls ja, ist eine entsprechende query kein Problem.

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 06:34
von heja
Moin,

@Baam wie ich das umsetzen könnte :gruebel: :gruebel: :gruebel:

@marcibet: Beide DBs sind auf dem selben Server.
In der Shop DB werden die Anmeldungen gehandelt (entweder Anmeldung beim Checkout oder über das Formular auf der Shopseite).

Abmeldung kann auf effektiv 3 Arten erfolgen:
- Aus einem versendeten Newsletter => geht dann auf die DB vom Newsletter und wird dort ausgetragen, alles ok
- Über das Formular im Shop => wird aus der Shop DB ausgetragen => Abgleich zur Newsletter DB derzeit offen
- In der double-opt-in Bestätigungsmail ist auch gleich ein Link zur Abmeldung drin => wird aus der Shop DB ausgetragen => Abgleich zur Newsletter DB derzeit offen

Ich hab derzeit halt immer noch ggf. die offen, die sich im Shop abmelden oder gleich wieder über die Anmeldemail.

Bei der Konfiguration des automatischen Imports kann ich wie schon erwähnt diese Anweisung vergeben:
SELECT * FROM tnewsletterempfaenger WHERE nAktiv = 1

Und hier wäre es für mich halt ideal, wenn diese Anweisung jetzt noch erweitert würde, damit die, die sich über die Shop DB ausgetragen haben auch aus der Newsletter DB rausgeschmissen werden. Natürlich unter Beachtung derer die ggf. noch nicht auf den Bestätigungslink gedrückt haben.

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 06:39
von marcibet
Na dann erweitere den Code fuer die beiden Abmeldungen die derzeit nur auf die shop Tabelle gehen dass sie auch gleich die Tabelle in der NL DB aktualisieren. Also ein zusätzliches Update Statement im Code. Alternativ kannst du auch mit trigger arbeiten falls MSSQL oder mysql

https://sirmark.de/computer/mysql/mysql ... -1288.html

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 06:43
von heja
marcibet hat geschrieben: 26. Mai 2020 06:39 Na dann erweitere den Code fuer die beiden Abmeldungen die derzeit nur auf die shop Tabelle gehen dass sie auch gleich die Tabelle in der NL DB aktualisieren. Also ein zusätzliches Update Statement im Code. Alternativ kannst du auch mit trigger arbeiten falls MSSQL oder mysql
Erwähnte ich schon, dass ich von dem Code keine Ahnung habe.

Diese SQL-Anweisung hat mir damals derjenige reingeschrieben der mir den Abgleich konfiguriert hat. Allerdings ist der in dem business nicht mehr tätig sonst hätte ich dort nachgefragt.

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 14:38
von heja
Hat evtuell jemand eine Idee wie der Code dafür aussehen müsste

Danke

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 14:50
von mwp
heja hat geschrieben: 26. Mai 2020 14:38 Hat evtuell jemand eine Idee wie der Code dafür aussehen müsste

Code: Alles auswählen

delete FROM tnewsletterempfaenger WHERE FELD_E_MAIL_ADRESSE = 'KUNDEN_E_MAIL_ADRESSE';

FELD_E_MAIL_ADRESSE muss mit dem passenden Spaltennamen aus der Datenbank ersetzt werden
KUNDEN_E_MAIL_ADRESSE ist die E-Mail Adresse des austragenden Kunden

Das SQL Statement löscht den kompletten Eintrag aus der Datenbank.

Wenn beides auf dem gleichen Server läuft, ist das doch ohnehin ein Murks, sowas über zwei Datenbanken laufen zu lassen.

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 15:22
von heja
mwp hat geschrieben: 26. Mai 2020 14:50
Wenn beides auf dem gleichen Server läuft, ist das doch ohnehin ein Murks, sowas über zwei Datenbanken laufen zu lassen.
Das kann sicher sein, aber ich bin da einfach nicht so in der Sache drin, dass ich das beurteilen kann.

Danke Dir für das Statement

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 15:39
von marcibet
Ich würde tunlichst die Finger davon lassen irgendwelche SQL Statements irgendwo einzubauen wovon du keine Ahnung hast..... ist ja wie bei versteckte Kamera hier.

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 15:43
von heja
Wenn ich da was mache werde ich eine Sicherung haben und einen Zest machen.

Aber trotzdem Danke für den Hinweis

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 16:00
von koshop
Wenn ich da was mache werde ich eine Sicherung haben und einen Zest machen.

Aber trotzdem Danke für den Hinweis
Wer brauch den eine Sicherung... Das macht man kurz auf dem Produktionsserver und gut ist.... :D
https://img.ifunny.co/videos/c40e882817 ... 3aa4_1.mp4

Re: Abgleich von 2 Datenbanken

Verfasst: 26. Mai 2020 17:28
von heja
koshop hat geschrieben: 26. Mai 2020 16:00
Wer brauch den eine Sicherung... Das macht man kurz auf dem Produktionsserver und gut ist.... :D
https://img.ifunny.co/videos/c40e882817 ... 3aa4_1.mp4
Genau so Beiträge sind notwendig, verwässert alles, Nur unnütz.
Wenn mir jemand offen und ehrlich sagt lass die Finger weg Du hast keine Ahnung ist mir das tausend mal lieber als so ein Schrott.
Vielleicht kennst Du Dich da ja besser aus, ist auch ok.
Aber nimm doch einfach einen passenden thread für Deine Spässe dazu.

Und bitte verschone mich mit noch einer Antwort.

Denen die was zum Thema beigetragen haben ein herzliches und ehrliches DANKE.

Re: Abgleich von 2 Datenbanken

Verfasst: 2. Jun 2020 11:05
von clarius
heja hat geschrieben: 26. Mai 2020 06:34 ...
Abmeldung kann auf effektiv 3 Arten erfolgen:
- Aus einem versendeten Newsletter => geht dann auf die DB vom Newsletter und wird dort ausgetragen, alles ok
- Über das Formular im Shop => wird aus der Shop DB ausgetragen => Abgleich zur Newsletter DB derzeit offen
- In der double-opt-in Bestätigungsmail ist auch gleich ein Link zur Abmeldung drin => wird aus der Shop DB ausgetragen => Abgleich zur Newsletter DB derzeit offen
...
Ich denke, es ist etwas umfangreicher. Wenn die Anmeldung im Shop erfolgt und die Abmeldung über das Newslettersystem würde im Shop weiterhin das Abo angezeigt. Mit der Synchronisierung in nur eine Richtung würde das Abo vom Shop erneut im Newslettersystem erstellt.

Wenn es wirklich "nur" um den Abgleich von Shop zu Newslettersystem geht, dann würde ich mit 2 Abfragen arbeiten.
DELETE mit Subselect Newsletter=false und danach
INSERT mit Subselect Newsletter=true