Thomas: 504 Gateway Time-out - Bei einem Update Script

Beitrag lesen

Und genau das tut mein SQL-Statement. "Google weiß alles" meint zwar, auf den COALESCE darin verzichten zu können, aber es sieht so aus als hättest Du nicht zu jedem Produkt einen Preis, darum muss das 'rein. Wenn Du den Preis als String speicherst, dann solltest Du das in NUMERIC oder DECIMAL ändern. Kannst Du auch aus CSV importieren.

Hallo,

danke nochmals für dein Beispiel. Ich habe mir zwei Demo Tabellen angelegt, die wie folgt aussehen:

CREATE TABLE IF NOT EXISTS `test1` (
`id` int(11) NOT NULL,
  `artnr` varchar(200) NOT NULL,
  `preis` varchar(200) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `test2` (
`id` int(11) NOT NULL,
  `artNr` varchar(200) NOT NULL,
  `Netto` varchar(200) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

Danach habe ich dein Script ausführen lassen:

UPDATE test1 
   SET preis = COALESCE((SELECT Netto
     FROM test2
     WHERE test2.artNr = test1.artnr), test1.preis)

Dazu bin ich in phpMyAdmin gegangen dann auf SQL und habe diesen Code eingefügt. Hat auch alles soweit geklappt, gut waren auch nur 10 Datensätze.

Was ich aber nicht ganz verstehe, warum hat der Server mit diesem Update weniger zu tun? Er muss doch ebenfalls alle Datensätze durchgehen, oder?