Jump to content
nibbl

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

Recommended Posts

Всем привет!

Вопрос может быть очень глупый для Вас, но я не знающий SQL и PHP буду Вам очень благодарен за помощь!

Исходные данные: 20 тыс товар и 200 категорий, половина товара у меня раскидана правильно по нескольким категориям +  добавлена в категорию РАЗОБРАТЬ, а остальная половина НОВОГО товара добавилась только в одну категорию РАЗОБРАТЬ

 

Задача: В opencart если ограничение, можно выбрать только одну категорию для фильтра в админке, а мне нужно сделать так что товар вывелся только если находится в одной категории, а все остальные игнорируются 

 

Примечание:

Смотрите, когда я фильтрую товар по категории в URL ссылке выводится filter_category_id=!1

что сюда можно добавить, что бы исключить все остальные категории?

 

Заранее большое спасибо!

Share this post


Link to post
Share on other sites
1 hour ago, nibbl said:

Задача: В opencart если ограничение, можно выбрать только одну категорию для фильтра в админке, а мне нужно сделать так что товар вывелся только если находится в одной категории, а все остальные игнорируются

стандартный фильтр товаров в опенкарте такого не умеет.

Его можно кастомизировать, конечно, это не сложно, но потребуется добавлять новые пользовательские элементы в форму\представление (вьюху), редактировать контроллер и модель для странички с фильтром товаров в админке. Например, можно добавить галочку типа "товар отсутствует в иных категориях, кроме выбранной" и научить опенкарт работать с этой галочкой. В паре слов инструкцию не возьмусь написать, пожалуй.

 

Если Вам нужно разого что-то с этими товарами сделать или просто найти\посмотреть, то нет ничего проще:

Spoiler

-- укажите ниже id-шник категории "разобрать". В примере стоит 82
-- и запрос целиком вернет вам id-шники всех товаров, 
-- который входят ТОЛЬКО в эту категорию и не принадлежат другим категоирям
-- ясное дело, префикс таблиц "ос_"  у Вас может быть другим
SET @category_razobrat = 82;

SELECT
  pd.product_id, pd.name, p.model
FROM oc_product_to_category p2c
  JOIN oc_product p ON p2c.product_id = p.product_id
  JOIN oc_product_description pd ON p2c.product_id = pd.product_id
WHERE p2c.category_id = @category_razobrat
AND NOT EXISTS (SELECT
    *
  FROM oc_product_to_category p2c_subq
  WHERE p2c_subq.product_id = p2c.product_id
  AND p2c_subq.category_id != @category_razobrat)

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.