Amarous Опубликовано 23 января, 2014 Жалоба Поделиться Опубликовано 23 января, 2014 Как и где в файле импорта добавить строку, что бы наличие по всем товара стало равно 0? Цитата Ссылка на сообщение Поделиться на другие сайты
just_simao Опубликовано 23 января, 2014 Жалоба Поделиться Опубликовано 23 января, 2014 В БД запрос:UPDATE `s_variants` SET `stock`=null WHERE 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Amarous Опубликовано 23 января, 2014 Автор Жалоба Поделиться Опубликовано 23 января, 2014 Спасибо kors и just_simao!Буду пользоваться пока так.Однако можно ли как-то добавить эту строку в import.php? чтоб каждый раз не влазить в phpmyadmin... Цитата Ссылка на сообщение Поделиться на другие сайты
kozhushko8 Опубликовано 1 июня, 2020 Жалоба Поделиться Опубликовано 1 июня, 2020 А как сформировать запрос дабы обнулить варианты товаров конкретного бренда? Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 1 июня, 2020 Жалоба Поделиться Опубликовано 1 июня, 2020 Если не ошибаюсь что-то вроде UPDATE `s_variants` v LEFT JOIN `s_products` p ON p.id = v.product_id SET `stock`=0 WHERE p.brand_id = айди_бренда Айди бренда можете посмотреть в админке Цитата Ссылка на сообщение Поделиться на другие сайты
kozhushko8 Опубликовано 2 июня, 2020 Жалоба Поделиться Опубликовано 2 июня, 2020 Если не ошибаюсь что-то вроде UPDATE `s_variants` v LEFT JOIN `s_products` p ON p.id = v.product_id SET `stock`=0 WHERE p.brand_id = айди_бренда Айди бренда можете посмотреть в админке Спасибо за помощь! Правда у меня задача чуть сложнее. Написал парсер XML, хочу ПОПРОБОВАТЬ перед импортом пройтись по файлу и собрать все уникальные бренды, которые присутствуют в файле, и обнулить варианты товаров тех брендов которые ранее получил. То есть в ходе запроса нужно получить их id по названиям. Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 2 июня, 2020 Жалоба Поделиться Опубликовано 2 июня, 2020 UPDATE `s_variants` v LEFT JOIN `s_products` p ON p.id = v.product_id LEFT JOIN `s_brands` b ON p.brand_id = b.id SET `stock`=0 WHERE b.name IN ('название бренда 1', 'название бренда 2'); Правда не уверен что такая конструкция вообще может работать Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 4 июня, 2020 Жалоба Поделиться Опубликовано 4 июня, 2020 Так работает: UPDATE `s_variants` v LEFT JOIN `s_products` p ON p.id = v.product_id LEFT JOIN `s_brands` b ON p.brand_id = b.id SET `stock`=0 WHERE b.name IN ('Nokia', 'Dyson'); Подобные задачи решаю обычно так:1. Завожу новое поле mark в таблице вариантов (или товаров или брендов),2. Перед началом обработки обнуляю его UPDATE ... SET mark=0,3. В процессе при обработке отдельного элемента у соответствующего товара ставлю отметку mark=1,4. В конце уже делаю запрос UPDATE ... SET stock=0 WHERE ... mark=0. Создание нового поля - маленький недостаток. Но в плюсе - экономия на повторном парсинге файла. Цитата Ссылка на сообщение Поделиться на другие сайты
kozhushko8 Опубликовано 4 июня, 2020 Жалоба Поделиться Опубликовано 4 июня, 2020 В случае с id работает такой запрос (может кому пригодится) $this->db->query('UPDATE __variants SET stock = 0 WHERE product_id IN (SELECT id FROM __products WHERE brand_id IN (1, 2, 3))'); Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 5 июня, 2020 Жалоба Поделиться Опубликовано 5 июня, 2020 В случае с id работает такой запрос (может кому пригодится) $this->db->query('UPDATE __variants SET stock = 0 WHERE product_id IN (SELECT id FROM __products WHERE brand_id IN (1, 2, 3))');а в чем принципиальное отличие от моего решения?))) Так работает: Благодарю за замечание. Цитата Ссылка на сообщение Поделиться на другие сайты
kozhushko8 Опубликовано 5 июня, 2020 Жалоба Поделиться Опубликовано 5 июня, 2020 а в чем принципиальное отличие от моего решения?))) Благодарю за замечание. Ваше не работает, ругается на синтаксис... Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 5 июня, 2020 Жалоба Поделиться Опубликовано 5 июня, 2020 Попробуйте скопировать поточнее ) Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 5 июня, 2020 Жалоба Поделиться Опубликовано 5 июня, 2020 Попробуйте скопировать поточнее ) Если "скопировать поточнее", то есть скопировать то, что исправлено позднее, то синтаксической ошибки нет, запрос отрабатывает, но не дает нужного результата (что бы наличие по всем товарам стало равно 0)... Предлагаемое SET `stock`=null - не соответствует наличию 0, надо stock=0, как в более поздних постах. Цитата Ссылка на сообщение Поделиться на другие сайты
Kasha Опубликовано 5 июня, 2020 Жалоба Поделиться Опубликовано 5 июня, 2020 спасибо за замечание, затупил. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.