PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   insert into on duplicate key update (http://www.selfphp.de/forum/showthread.php?t=22156)

Loki555 22.09.2009 11:33:55

insert into on duplicate key update
 
Hallo zusammen,

ich stehe momentan vor einem riesen Problem und hoffe ihr könnnt mir helfen.

Aus einer db2 Datenbank hole ich mir mit einem Tool mehrere Tabellen in MySQL.
Das klappt Zeitgesteuert einwandfrei.

Nun habe ich die Daten in zwei MySQL Tabellen die täglich überschrieben werden.

In MySQL habe ich eine dritte Tabelle in der alle Felder von Tabelle 1 und 2 vorkommen plus ein paar zusätzliche.

Wie kann ich nun ein Update machen?

Ich möchte also das meine Tabelle 3 auf dem aktuellen Stand bleibt.
Hoffe ich kann es verständlich darstellen:

Tabelle 1 (Kunden)
index
T1Feld2
T1Feld3
T1Feld4
T1Feld5
T1Feld6

Tabelle 2 (Umsätze)
index (passend zu Tabelle 1 -> Umsätze zu Kunde)
T2Feld2
T2Feld3
T2Feld4
T2Feld5
T2Feld6
T2Feld7
T2Feld8

Tabelle3
kundenid (unabhängig von Tabelle 1 und 2)
T1Feld2
T1Feld3
T1Feld4
T1Feld5
T1Feld6
T2Feld2
T2Feld3
T2Feld4
T2Feld5
T2Feld6
T2Feld7
T2Feld8
T3Feld2
T3Feld3
T3Feld4
T3Feld5

Erschwerend kommt hinzu, dass in meiner Tabelle 3 Kunden drin sind, die noch keine Kundenummer haben, sozusagen potenzielle Kunden. Aber es sollen ja nur die Kunden
aktualisiert werden, die eine Kundennummer haben.

Tabelle hat auch eigene Felder, diese sollten nicht verloren gehen.

In Tabelle 1 habe ich einen Index, dieser kommt in Tabelle 2 auch vor, in Tabelle 2 habe ich die Kundennummer der Kunden, diese habe ich auch wieder in Tabelle 3.

Wie kann ich die Felder in Tabelle 3 nun aktualisieren und wenn in Tabelle 1 / 2 ein neuer Kunde ist, diesen in Tabelle 3 hinzufügen?

Habe folgenden SQL Befehl gefunden, habe aber keine Primärschlüssel der übereinstimmt.

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

Gib es vielleicht Tools?

Hoffe auf eure Hilfe.
Gruß

mgr 23.09.2009 10:22:02

AW: insert into on duplicate key update
 
Hi Loki

dein Problem würde ich mit einem Redesign der Tabelle3 angehen:

Tabelle3 (Haupttabelle, alle Kunden sind sicher da drin)
kundenid (PKEY)
indexTabelle1 (kann NULL sein)
indexTabelle2 (kann NULL sein)
T3Feld2
T3Feld3
T3Feld4
T3Feld5

Deine Kunden werden in Tabelle3 eröffnet und sobald Daten in Tabelle1 oder 2
hinzugefügt werden (bzw. aus potentiellen Kunden richtige Kunden werden), kannst du einfach den Index des Records zu Tabelle3 hinzufügen.

So kannst du jede Tabelle einzeln aktualisieren (vereinfacht INSERT bzw UPDATE)
und per SELECT * FROM Tabelle3 LEFT JOIN Tabelle1 ON Tabelle3.indexTabelle1 = Tabelle1.index (usw.) alle Daten auslesen.

Hoffe ich habe alles richtig verstanden....

Lg
mgr


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:48:39 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.