Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Помогите с запросом


remix8080

Recommended Posts

Вечера доброго всем!

Помогите, пожалуйста, с запросом. Обновляю цену/наличие в таблице oc_product из созданной oc_import (поля upc, price, status_qt). В oc_import заливаю данные из внешнего файла.

В oc_product использую поля upc (код по поставщику для связи с oc_import), price, quantity.

В таблице oc_product нужно для всех непустых upc, которых НЕТ в oc_import проставить quantity=0 (связка по upc).

Выбираю такие товары так:

SELECT pr.upc FROM `oc_product` pr
LEFT OUTER JOIN `oc_import` imp ON pr.upc=imp.upc
WHERE pr.upc<>'' AND imp.upc IS null

А вот при самом апдейте ругается "таблица pr указывается дважды, как цель для UPDATE и как отдельный источник данных."

UPDATE `oc_product` pr SET pr.quantity=0 WHERE pr.upc IN
(SELECT pr.upc FROM `oc_product` pr
LEFT OUTER JOIN `oc_import` imp ON pr.upc=imp.upc
WHERE pr.upc<>'' AND imp.upc IS null)

Подскажите, как правильно написать апдейт.

Спасибо заранее!

 

 

Надіслати
Поділитися на інших сайтах


1) UPDATE `oc_product` pr SET pr.quantity = 0 
WHERE pr.upc <> '' AND pr.upc NOT IN 
(SELECT DISTINCT upc FROM `oc_import`)

2) UPDATE `oc_product` pr 
LEFT OUTER JOIN `oc_import` imp ON pr.upc = imp.upc
SET pr.quantity = 0 
WHERE pr.upc <> '' AND imp.upc IS null
  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.