Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Probleme mit Update [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Probleme mit Update


 
bweichel
17-03-2007, 14:04 
 
Ich habe eine Datenbank mit alten Preisen und möchte nun die neue Preise für 2007 einspielen. In einer zweiten Tabelle steht die Artikelnummer und der neue Preis. Nun habe ich mit folgendem Befehlt die Preise aktualisiert:


UPDATE
shopartikel t1, zw t2
SET t1.artpreis = t2.preis
WHERE t1.artnum = t2.artikelnum


So, nun das eigentliche Problem... zuvor habe ich mit folgendem Befehl kontrolliert, wie viele Datensätze er eigentlich hätte updaten müssen...


SELECT t1.artnum, t1.artpreis, t2.preis
FROM shopartikel t1, zw t2
WHERE t1.artpreis != t2.preis
AND t1.artnum = t2.artikelnum
ORDER BY t1.artnum ASC


heraus kam 1418, beim updaten wurde aber nur 1176 Datensätze geändert... er scheint also nur dann was zu ändern, wenn der Preis der beiden Tabellen unterschiedlich ist...

Daraufhin habe ich alle Preise der Tabelle shopartikel auf 0 gesetzt und das erste update erneut ausgeführt. Dann waren es 1441 Datensätze die geändert wurden. Die differenz der zwischen 1441 und 1418 waren die Datensätze in denen der Preis gleich blieb.

Ich verstehe jetzt nicht so ganz warum die Preise bei meinem ersten Befehl nicht vollständig geändert wurden. Kann das jemand nachvollziehen?

 
ministry
17-03-2007, 14:12 
 
Wenn Sie eine Spalte auf den Wert aktualisieren, den sie ohnehin gerade hat, dann bemerkt MySQL dies und führt keine Aktualisierung durch. Steht im manual und macht ja auch Sinn...

 
TobiaZ
17-03-2007, 14:42 
 
Jou, absolut normales und gewolltes Verhalten.

 
bweichel
17-03-2007, 15:00 
 
ich habe dann auch noch bemerkt das die einen tabelle float eingestellt war und bei der anderne decimal. das erklärt dann auch die unterschiedlichen werte...


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:47 Uhr.