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

SQL запрос отключения категорий


Recommended Posts

Добрый день. Пытаюсь с помощью SQL запроса скрыть категории, в которых нет товаров в статусе "Активен".

 

Вот такая конструкция почему-то не работает:

UPDATE oc_category
SET status=0
WHERE category_id in (SELECT distinct category_id FROM oc_product_to_category pc, oc_product p WHERE pc.product_id=p.product_id AND p.status=0)

 

Запрос переводит вообще все категории в статус 0, даже те, в которых есть активные товары.

Прошу помощи с запросом.

Змінено користувачем petr12345
цу
Надіслати
Поділитися на інших сайтах


Хотя если пойти от обратного и выполнить такую последовательность:

 

1 запрос: выключаем все категории вообще

update oc_category
set status=0;

 

2 запрос: включаем только те, что содержат в себе активные товары:

update oc_category
set status=1
WHERE category_id in (SELECT distinct category_id FROM oc_product_to_category pc, oc_product p WHERE pc.product_id=p.product_id AND p.status=1);

 

Тогда работает. Понимаю что костыли с граблями. Как сделать одним запросом и поизящней?

Змінено користувачем petr12345
Надіслати
Поділитися на інших сайтах


28.02.2022 в 15:20, AlexDW сказал:

 

Вот такое наваялось:
Отключает категории без товаров и категории, где товары не активны.

 

Цитата
UPDATE oc_category c 
LEFT JOIN oc_product_to_category pc ON c.category_id = pc.category_id
LEFT JOIN oc_product p ON pc.product_id = p.product_id
SET c.status = 0
WHERE pc.product_id IS NULL 
OR pc.product_id=p.product_id AND p.status = 0

 

Вообще легально 2 раза делать left join?

PS: Я не программист, извините за глупые вопросы

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


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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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