Datenbankeinträge aktualisieren

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich brauche mal wieder eure Hilfe, weil ich gerade eine tierische Denkblockade habe.

Ich habe eine Kundentabelle und eine neue Kundentabelle, in der aufgeräumt und einige Kunden zusammengefasst wurden. Nun möchte ich in der Tabelle "Aufträge" die alten Kundennr. mit den neuen ersetzen.

Ich habe dazu auch ein Script geschrieben:

PHP:
<?php
include_once "./exe/funktionen.php";

db_connect();
$sqlab = "select kunde_old, kunde_new from kunden_konvertieren";
$erg = mysql_query($sqlab);

while($kunde_konvert = mysql_fetch_assoc($erg)) {
   $sqlab2 = "update auftrag set k_t_g = '".$kunde_konvert["kunde_new"]."' where k_t_g = '".$kunde_konvert["kunde_old"].'";
   mysql_query($sqlab2);
   echo $sqlab2 . "<p>";
}
?>

Zur Erklärung: in der Tabelle "kunden_konvertieren" sind alle alten und neuen Kundennr. gegenübergestellt, damit man weiß welche Nummer vorher war und welche es nachher sein soll.

Dieses Script geht nun in die Tabelle "auftrag" und ersetzt alle alten Kundennr. durch die neuen. So weit so gut, doch nun kommt mein Problem:

wenn in der Tabelle "auftrag" eine Kundennr. schon mal geändert wurde, z.B. von 3 in 9. Dann kommt das Script irgendwann an die Stelle, wo alle 9er in z.B. 20 umgeändert wird. Somit sind auch die Kunden, die vorher mal 3 waren und nun 9 bleiben sollen, auch in 20 umgeändert worden.

Weiß jemand, wie ich das umgehen kann und irgendwie verhindern kann, dass bereits umgeänderte Kundennr. nochmals geändert werden? Ich steh grad total auf dem Schlauch und wäre für Hilfe dankbar.

Gruß, eure Joey
 
Kannst du nicht (und wenn es nur vorübegehend ist) in der Auftragstabelle ein Feld aufnehmen in dem du kennzeichnest ob dieser Auftrag/die Kundennummer bereits geändert wurde oder nicht.
 
Hi,

das hab ich grad gemacht und das funktioniert auch. Aber nun ist mir noch was eingefallen (natürlich erst, nachdem ich schon alle Daten umgeschrieben habe).

Es wird noch ein wenig komplizierter und nun bekomm ich endgültig einen Knoten in mein Gehirn:

Es gibt noch eine Zwischentabelle "k_t_g". Dort wird jedem Kunden eine Telefonnummer zugewiesen. Und in dem Auftrag wird dann nicht die Kundennummer, sonder diese "ktg_id" gespeichert und so die Verknüpfung zum Kunden hergestellt.

Ich muss also folgendes irgendwie abfragen: wie ist die neue Kundennummer und welche ktg_id gehört dazu und diese dann in den Auftrag schreiben. Aber mir fällt nicht ein, wie ich die Abfrage und das Update der Datenbank durchführe
 
Also im Moment würde ich das auf zwei Läufe aufteilen.

Zuerst wurde ich wie im vorherigen Fall die Zwischentabelle um ein Feld erweitern und dann dort die alte durch die neue Kundennummer ersetzen. Im zweiten Lauf kannst du dir dann diese ID holen und beim Auftrag eintragen.
 

Neue Beiträge

Zurück