SQl Abfrage

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?

Grüße Michael

Hi,

wo liegt denn genau das Problem?

Du möchtest von 1 alle auf 2 kopieren und anschließend ausgeben wer in 2 steht und der Wert “aktiviert” = 0 ist? Habe ich das so richtig verstanden?

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

Ich als Grobmotoriker würde behaupten, dass das ganz einfach so ging:

Kopieren der Dateien

Und im zweiten Schritt halt die Ausgabe

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 )

danke schonmal kerbi :slight_smile:

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 :slight_smile:

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

Dann sollte das anhand von UNIQUE problemlos möglich sein :slight_smile:

ok super dann lese ich mich da mal ein :slight_smile:

edit: also wenn ich nun einer spalte die eigeschaft unique gebe, und dann daten einfülle werden die doppelten einfach ignroeiert richtig verstanden? :slight_smile:

Jap. Versucht man doppelte Einträge zu erzeugen meckert SQL entsprechend
#1062 - Duplicate entry ‘foo’ for key ‘bar’

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 :frowning:

Habe gerade mal getestet

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…

Hat nun funktioniert mit

INSERT IGNORE  INTO

Grüße Michael :wink2:

if-schleifen.de :nutz: :motz: !haue !haue :stress: :stress: :stress: :stress:

EDIT:
Denkfehler :smiley: hehe
Hab deinen Post gesehen / gelesen und du hast über 'ne Schleife philosophiert… unten dann aber eine IF-Abfrage, ergo meine Reaktion :smiley: :ps:

hehe :smiley:

eine Frage noch:

Ich lasse nun alle Datensätze per SCHLEIFE durchlaufen und prüfe dann per BEDINNUNG ob etwas an dem Datensatz verändert werden soll.

Wie update ich die Datensätze den nun am schlausten / performantesten?