Запрос на обновление обновляет не всё

Anton Klyauzov
Дата: 24.12.2012 12:57:48
Привет всем.
Есть служебная таблица с такой структурой (дамп mysql):
CREATE TABLE IF NOT EXISTS `rtemp` (
  `rsku` varchar(64) NOT NULL,
  `rstore` int(11) NOT NULL,
  `rprice` decimal(12,5) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `rtemp`
--

INSERT INTO `rtemp` (`rsku`, `rstore`, `rprice`) VALUES
('A15-1301110', 1, '2000.00000');


Она периодически пополняется новыми значениями товаров из текстового файла (код товара, кол-во на складе и цена).
Существует еще одна рабочая таблица со схожей структурой jos_vm_products (она отличается от служебной только наличием дополнительных полей).
Задача - обновить данные рабочей таблице, основываясь на существующих данных в служебной таблице. Обновить нужно только те записи, которые существуют и в рабочей и в служебной.

Я не очень хорошо знаю Sql (возможно, даже вообще плохо знаю). Мне удалось составить запрос вот такой:
UPDATE (rtemp LEFT JOIN jos_vm_product ON rtemp.rsku = jos_vm_product.product_sku) 
LEFT JOIN jos_vm_product_price ON jos_vm_product.product_id = jos_vm_product_price.product_id 
SET jos_vm_product.product_in_stock = rtemp.rstore, jos_vm_product_price.product_price = rtemp.rprice; 


Но почему-то записи обновляются не все. Т.е. к примеру товар с кодом "A15-1301110" присутствует в обеих таблицах, а по нему обновляется только кол-во, а цена - нет.

Где я ошибся?
Akina
Дата: 24.12.2012 13:01:17
update
  rtemp
, jos_vm_products 
set
  jos_vm_product.product_in_stock = rtemp.rstore
, jos_vm_product_price.product_price = rtemp.rprice
where 
  rtemp.rsku = jos_vm_product.product_sku;
Anton Klyauzov
Дата: 24.12.2012 13:08:38
Akina,

Прошу прощения, забыл уточнить, что цена хранится в третьей таблице, jos_vm_product_price
Связь между jos_vm_product_price и jos_vm_product осуществляется через поле product_id
Anton Klyauzov
Дата: 24.12.2012 13:16:34
А, я похоже понял.
Если для продукта не было установленной ранее цены, то в jos_vm_product_price записи с ценой для этого продукта не существует.
Можно ли как-то в запросе проверить отсутствие и при необходимости - добавить?

Или мне поможет только построчное сравнение для каждого случая через, к примеру, PHP?
Akina
Дата: 24.12.2012 13:58:42
Anton Klyauzov
Можно ли как-то в запросе проверить отсутствие и при необходимости - добавить?

insert ... on duplicate key update ...