Я действительно борюсь за то, как добиться этого, и надеюсь, что кто-то может мне помочь. У меня есть существующие функции и запрос:Обновить одну таблицу, где запись найдена в другой таблице
public function setStockAndPrice($product_id) { $query = $this->db->query('UPDATE ' . DB_PREFIX . 'product SET quantity = 0, price = 0.00 WHERE product_id = ' . (int)$product_id) }
Это работает, но он устанавливает все продукты к нулю, когда я на самом деле хочу это только набор продуктов, к нулю, когда этот продукт существует в другой таблице.
т.е., в пояснительных терминах:
public function setStockAndPrice($product_id) { $query = $this->db->query('UPDATE ' . DB_PREFIX . 'product SET quantity = 0, price = 0.00 WHERE product_id = ' . (int)$product_id AND product_id exists in CustomerProducts) }
Я не сведущий с соединениями, но я не уверен, что даже нужно использовать присоединиться здесь как запрос кажется более простым, чем это.
Может ли кто-нибудь указать мне правильное направление?
спасибо.
Роб
Большое спасибо за Ваш ответ. Я попытался выполнить это, но он дал ошибку - синтаксическую ошибку, неожиданную '='. Извините - все идеи? – Rob
отредактировал мой ответ, вам нужно поставить «before and..check now». – saveATcode
Еще раз спасибо, но извините еще раз - в то время как код запустился на этот раз, когда он добрался до такой степени, он придумал эту ошибку: PHP Примечание: ошибка : Подзапрос возвращает более 1 строки
Ошибка №: 1242
UPDATE product SET quantity = 0, price = 0.00 WHERE product_id = 4392 AND product_id = (выберите product_id из CustomerProducts где product_id = 4392) в/home/sites/opencart/dev/system/database/mysql.php в строке 49 Я не уверен, почему он вернул несколько строк, но неважно, сколько записей в таблице CustomerProducts существует только в том случае, если оно существует. Обновите его, если он существует, t, если это не так. – Rob