Abgleich von 2 Datenbanken

Programmierung, Templatedesign & Codeschnipsel
Antworten
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Abgleich von 2 Datenbanken

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


IT-Recht Kanzlei
Baam
Beiträge: 1057
Registriert: 13. Sep 2012 17:12

Re: Abgleich von 2 Datenbanken

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.
marcibet
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 1098
Registriert: 2. Nov 2017 16:04

Re: Abgleich von 2 Datenbanken

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.
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Re: Abgleich von 2 Datenbanken

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.
marcibet
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 1098
Registriert: 2. Nov 2017 16:04

Re: Abgleich von 2 Datenbanken

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
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Re: Abgleich von 2 Datenbanken

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.
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Re: Abgleich von 2 Datenbanken

Hat evtuell jemand eine Idee wie der Code dafür aussehen müsste

Danke
mwp
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 1284
Registriert: 12. Okt 2009 14:40
Land: Deutschland

Re: Abgleich von 2 Datenbanken

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.
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Re: Abgleich von 2 Datenbanken

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
marcibet
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 1098
Registriert: 2. Nov 2017 16:04

Re: Abgleich von 2 Datenbanken

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.
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Re: Abgleich von 2 Datenbanken

Wenn ich da was mache werde ich eine Sicherung haben und einen Zest machen.

Aber trotzdem Danke für den Hinweis
Benutzeravatar
koshop
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 5070
Registriert: 4. Sep 2012 13:23

Re: Abgleich von 2 Datenbanken

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
heja
Beiträge: 291
Registriert: 8. Aug 2008 17:31
Land: Deutschland

Re: Abgleich von 2 Datenbanken

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.
clarius
Beiträge: 402
Registriert: 11. Jan 2013 11:03

Re: Abgleich von 2 Datenbanken

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
Antworten

Zurück zu „HTML, PHP, CSS, & Co.“

  • Information