Moin,
ich habe zwei Usertabellen portal1_user und portal2_user.
in portal1_user stehen nun schon jede Menge Benutzer, diese sollen nun in Portal2 angelegt werden, danach sollen alle Nutzer aus Portal2 angezeigt werden die in der Spalte aktiviert den wert 0 haben angezeigt werden.
diese durchlaufen dann ein phpscript was den wert dann user für user auf 1 setzt, jmd eine idee wie ich das am sinnvollsten umsetze?
jop genau,
das problem ist eigentlich das ich sql absolut nicht in meine birne reinbekomme und absolut kein plan habe wie ich das am schlausten /überhaupt ( also befehlsseitig ) anstelle :S
das vorgang soll täglich erfolgen, sprich wenn in der tab1 neue benutzer sind müssen sie der tabelle2 hinzugefügt werden.
in der realität sieht es dann so aus:
Ich habe einen Onlineshop, dessen Kunden täglich Abends in das Rechnungsprogramm übertragen werden sollen. Leider habe ich keinen Einfluss auf die Geneierung der ID´s usw innerhalb des Rechnungsprogrammes, deshalb habe ich mir überlegt dass ich eine zwischentabelle anlege, in der die kundenid aus dem webshop und die kundenid aus der zahlungsschnittstelle geschrieben wird + einer spalte ob die eintragung in das rechnungsprogramm erfolgreich war
ok hört sich eigentlich recht einfach an :-o
dachte man müsste noch mit joins bla kopfschmerz arbeiten
und das
INSERT INTO `table2` (`col1`,`col2`,`col3`) SELECT `col1`,`col2`,`col3` FROM `table1`;
klappt auch wenn ich das script mehrmals durchlaufen lasse? ( es soll keine doppelten kunden geben )
Man könnte da bspw. mit UNIQUE arbeiten…
In einem Konstrukt, bei dem ein Kunde mehrfach bestellt - kann ja durchaus vorkommen - könnte das aber natürlich zu Problemen führen. Vielleicht wäre es eine Alternative die Tabelle immer zunächst von Altlasten zu befreien?
die bestellungen regelt eine extra tabelle, in der tabelle die “synchronisert” werden sollen sind die Kunden in der Regel einzigartig, und wenn sie sich selbst doppelt registrierien können sich später auch ohne probleme doppelt in der buchhaltung auftauchen
mir wäre es am liebsten wenn die zwischentabelle immer aufgefüllt wird, also neue datensätze hinzukommen, da die zwischentabelle dann die kundenid von rechsystem und shop sowie eine spalte mit dem status ( kommt vom rechungsystem zurück, ob das einpflegen erfolreich war oder nicht ) enthält und ich denke dass ich so den besten überblick habe ob wohl alle Kunden übernommen wurden
so habe das ganze nun getestet, leider nur mit mäßigem erfolg :S
wenn ich nun neue datensätze anlege und diese übertragen will, bricht der komplette auftrag ab eben wegen des #1062, sprich er sagt fehler und fügt nicht die neuen nutzer ein,
es müsste aber so sein das die neuen datensätze einfach hintendran kommen
INSERT INTO rechnungs_kunden (shop_knd_id,status) SELECT customers_id, 0 FROM shop_kunden WHERE shop_kunden.customers_id !=rechnungskunden_kunden.shop_knd_id;
das klappt schonmal net weil er dann sagt der er rechnungskunden_kunden.shop_knd_id; nicht kennt
Hm… spontan würde ich eine Schleife nutzen, die immer zunächst prüft ob ein Datensatz existiert und erst dann den neuen einfügt. Sicherlich gibt es aber noch andere (bessere) Möglichkeiten…
EDIT:
Denkfehler hehe
Hab deinen Post gesehen / gelesen und du hast über 'ne Schleife philosophiert… unten dann aber eine IF-Abfrage, ergo meine Reaktion