Folgendes soll das Script nun erledigen:
Gehe in die Tabelle „produkte“ schnapp dir dort eine Artikelnummer, gehe mit dieser in die Tabelle „preise“ schau dort nach der zuvor aufgenommen Artikelnummer, schnapp dir den dazugehörigen Preis und führe in der Tabelle „produkte“ ein Update durch.
Das Problem ist die hohe Anzahl der Schleifendurchläufe, kombiniert mit mit der resultierenden hohen Anzahl an einzeln übermittelten SQL-Anweisungen. Womöglich gibt es weitere Probleme infolge fehlender Indexierung der Tabellen und/oder das eines "weit entfernten" Datenbankservers. Nur dann kann bei diesen Zeilenzahlen ein TimeOut erfolgen.
Hier die Lösung:
Sende genau einen Befehl an die Datenbank und überlasse lasse dieser die "Durchläufe". Dazu ist ein Join zu bauen, hier reicht ein implizierter:
Tabelle test_preise vorher:
Tabelle test_produkte vorher:
sql:
UPDATE test_produkte, test_preise
SET test_produkte.preis = test_preise.preis
WHERE test_produkte.artikelnummer = test_preise.artikelnummer
AND test_produkte.preis <> test_preise.preis
Tabelle test_produkte danach:
Das war wohl gefragt...