Aktualizacja wielu rekordów naraz w MySQL

0

Witam serdecznie,
mam 2 tabelki w MySQL:

CREATE TABLE IF NOT EXISTS `cms_temer` (
  `bf_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `nazwa` int(11) NOT NULL,
  `ilosc` int(11) NOT NULL,
  PRIMARY KEY (`nazwa`),
  UNIQUE KEY `id` (`bf_id`),
  UNIQUE KEY `nazwa` (`nazwa`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS `cms_produkty` (
  `bf_id` bigint(35) unsigned NOT NULL AUTO_INCREMENT,
  `nazwa` varchar(455) COLLATE utf8_unicode_ci DEFAULT NULL,
  `obrazek` varchar(400) COLLATE utf8_unicode_ci DEFAULT NULL,
  `isbn` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `kategoria` int(11) DEFAULT NULL,
  `podkategoria` int(11) DEFAULT NULL,
  `podgrupa` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `ate` varchar(300) COLLATE utf8_unicode_ci DEFAULT NULL,
  `ilosc` int(11) DEFAULT '1',
  UNIQUE KEY `id` (`bf_id`),
  UNIQUE KEY `isbn` (`isbn`),
  KEY `nazwa` (`nazwa`(333)),
  KEY `podkategoria` (`podkategoria`),
  KEY `kategoria` (`kategoria`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 

W tabeli cms_produkty mam różnego rodzaju produkty (ok 200 tys). W tabeli cms_temer - mam codziennie aktualizowane stany.
Opis tabeli cms_temer:
nazwa = cms_produkty.ate
ilość = cms_produkty.ilosc
Muszę na podstawie tabeli cms_temer przeprowadzić aktualizację produktów w tabeli cms_produkty
Próbuję rozwiązać tą aktualizację za pomocą skryptu:

 $update1 = null;
			$update2 = null;
			$update3 = null;
			$iillee = 0;
			$update = null;
			$wynik = mysql_query(" SELECT * FROM cms_temer  ;") or die('Query failed: ' . mysql_error());
			while($rek = mysql_fetch_array($wynik)) { 
				if($iillee < 200) {
					$update .= " UPDATE cms_produkty2 SET ilosc = '$rek[ilosc]' WHERE ate = '$rek[nazwa]'; ";
					$update1 .=  "  WHEN $rek[nazwa] THEN '$rek[ilosc]' ";
					$update2 .= " $rek[nazwa],  ";
					$update3 .= 
					$iillee = $iillee + 1;
				}
				if($iillee == 200){
				$update2 = substr($update2, 0, -3);
					$qqqqqq =  "UPDATE cms_produkty2 SET ilosc = CASE ate
						 $update1
						 ELSE ilosc END
						WHERE ate IN ($update2);
					";
					mysql_query($qqqqqq);
					$update1 = null;
					$update2 = null;
					$update3 = null;
					$iillee = 0;
				}
			}

Problem w tym że nie wszystkie rekordy zawsze mi się aktualizują.... Część produktów ma zmieniony stan - a część nie... Ma ktoś może pomysł jak to naprawić?

Bardzo proszę o pomoc,
Northwest

0

Połącz tabele JOINem i updajtuj

0

mógłbym prosić o przykład?

1 użytkowników online, w tym zalogowanych: 0, gości: 1