Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Как посчитать количество товаров в опциях SQL запросом


Recommended Posts

Дано: Opencart, один товар штаны.

 

Опция размер:

- M - 5 штук
- XL - 5 штук

 

Опция цвет:

- белый - 3 штук
- чёрный - 7 штук

 

Как sql-запросом посчитать количество штанов белого цвета, размера XL

Edited by d0tb0t
Link to comment
Share on other sites


В обычном варианте никак, поскольку опции никоим образом не связанны друг с другом.

То есть, универсального решения не получится сделать.

P.S.

Есть модуль Связанные опции, где этот вопрос решён

Edited by krumax
Link to comment
Share on other sites


11 минут назад, krumax сказал:

В обычном варианте никак, поскольку опции никоим образом не связанны друг с другом.

То есть, универсального решения не получится сделать.

 

Как с этим жить? Как на этом можно интеграцию со складом делать?

Про модуль "связные опции" я в курсе. Это как минимум лишняя прослойка.

Интересует живой опыт.

Link to comment
Share on other sites


Точно не уверен, не проверял!

SELECT count(*) FROM `oc_product_option_value` WHERE product_id = '42' AND option_id = 5 AND option_value_id = ('40,41')

То есть вместо 40 и 41 ставите id цвета и размера.

Повторюсь, не проверял! 

Link to comment
Share on other sites

38 минут назад, Designer сказал:

Запрос указанный выше можете даже не проверять, он не рабочий.

 

Вы тестовые данные подставили? У вас ответ какой получился?

Edited by d0tb0t
Link to comment
Share on other sites


1 час назад, Designer сказал:

нет, сами тестируйте

 

Запрос выдаёт 1 или 0 при любом сочетании option_id и option_value_id

Link to comment
Share on other sites


22 минуты назад, Designer сказал:

Как я понял, есть товар 1 - опция: Белый - 5 шт, опция XL - 3 шт, нужно посчитать их общее кол-во, т.е 8 шт должно быть в результате?

Или же есть 5 товарв с такими опциями и нужно посчитать именно, сколько еще товаров есть в базе с такими параметрами? 

 

У меня на складе штаны 2х размеров и 2х цветов, в произвольной комбинации, в общем 10 штук

Из них 5 размера XL и 5 размера M, 3 белого, 7 чёрного

Заношу это в базу опенкарта штатными средствами, одним товаром с опциями, чтобы получить переключатели опций.

Как теперь из базы получить количество штанов белого цвета, размера XL

Edited by d0tb0t
Link to comment
Share on other sites


вам выше написали, что никак

у вас должен учитываться остаток по связке опций цвет-размер

Link to comment
Share on other sites


3 минуты назад, thentru сказал:

вам выше написали, что никак

у вас должен учитываться остаток по связке опций цвет-размер

 

Отлично. Я догадывался, но было подозрение что математику плохо знаю.

Как с этим жить? Как со складом, CRM интеграцию делать? там везде SKU.

Таблица посредник (Связные опции), изменение модели для вариантов.

Прошу поделится опытом.

Link to comment
Share on other sites


13 часов назад, d0tb0t сказал:

Дано: Opencart, один товар штаны.

 

Опция размер:

- M - 5 штук
- XL - 5 штук

 

Опция цвет:

- белый - 3 штук
- чёрный - 7 штук

 

Как sql-запросом посчитать количество штанов белого цвета, размера XL

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

1) Штаны белые XL 1шт

    Штаны белые M 2шт

    Штаны чёрные XL 4шт

    Штаны чёрные M 3шт

 

2) Штаны белые XL 2шт

    Штаны белые M 1шт

    Штаны чёрные XL 3шт

    Штаны чёрные M 4шт

и т.д

Поэтому нужно указывать количество конкретно для каждой комбинации

 

Цитата

Интересует живой опыт.

Скрещивали обмен с 1С и модулем Связанные опции (правда, был ещё тот геморой)

 

Как вариант:

Создаёте товар "Штаны белые" и для них уже добавляете опцию "Размер" (такой вариант предпочтителен). Для того, чтобы показать, что у Вас есть товар других цветов, то можно сделать модулем как вот на этом примере

Am3OS7hfTW_VvUSBFiv9Tw.png

Edited by krumax
Link to comment
Share on other sites


  • 3 weeks later...

привет. 

Остаток действительно не посчитать(ну или на первый взгляд не посчитать). Но вот посчитать число проданных белых штанов размером XL  возможно. (данные из oc_order_option и oc_order_product). Если такое решение подойдет, то могу собрать запрос ближе к выходным. 

Link to comment
Share on other sites

@d0tb0t Все поступления есть в Моем Складе. Продажи есть в OpenCart, которые, в общем случае, можно считать списанием. Т.е. можно легко вычислять остатки, но они будут доступны только в Моем складе. И вычислять остатки будет Мой Склад.
 

У моей супруги именно такая связка. OpenCart 1.5 + Мой склад. На стороне сайта не учитываем остатки. Списания в моем складе делаем вручную, т.к. продаж мало через сайт. Если что-то заказывают из того что нет на складе, то клиенту предлагается замена, подождать пока приедет от поставщика. + учитываются продажи в офлайн.

 

В моем варианте вообще нет склада. Поэтому остатки не считаем. 

Link to comment
Share on other sites

29 минут назад, ArtShatov сказал:

Поэтому остатки не считаем.

Даже при наличии "мой склад" актуальных остатков мы не имеем.

Кроме как по каждому обновлению корзины лазить за остатками удалённо в Мой склад.

Link to comment
Share on other sites


1 час назад, d0tb0t сказал:

Даже при наличии "мой склад" актуальных остатков мы не имеем.

 

Все верно. На стороне сайта остатков, действительно, не будет. Поэтому

1 час назад, d0tb0t сказал:

Кроме как по каждому обновлению корзины лазить за остатками удалённо в Мой склад.

 

Но чтобы остатки были хотя бы в моем складе нужно их туда заносить. Если продаж мало, то можно и руками кажыдый заказ в мой склад затянут. Если лень руками - можно автоматизировать. 

 

А вообще задача не понятно. Нужно защититься от заказов того что нет в наличии? Или надо с помощью Опенкарта учет наличия наладить?

 

Link to comment
Share on other sites

3 минуты назад, ArtShatov сказал:

А вообще задача не понятно. Нужно защититься от заказов того что нет в наличии? Или надо с помощью Опенкарта учет наличия наладить?

 

Ну в общем хотелось бы. OpenCart в тройке по популярности как ИМ. А какой магазин без учёта остатков? Без остатков это скорей каталог.

Link to comment
Share on other sites


  • 4 months later...
7 минут назад, sethtm сказал:

остатки можно синхронизировать с моего склада ) пишите если актуально

  


Поясните, как вы будете это делать? К сожалению, мне не надо, но очень интересно. 
 

Link to comment
Share on other sites

Я бы лучше создавал штаны разных цветов, связывая их в одну коллекцию, а опциями бы сделал размер штанов.

Хотя, @krumax Вам уже указал - это и точки зрения юзабилити, и с точки зрения СЕО куда лучше, чем сделать один товар с огромной простыней опций и параметров.

 

Edited by niger
Link to comment
Share on other sites


у меня в магазине нет подобного примера, к сожалению: нет товара с двумя опциями.Потому проверить достоверность результатов не могу. Но вроде все решаемо. попробуйте вот так. Возможно, нужно будет ограничить поиск, предварительно сделав выборку ТОЛЬКО белых штанов, а затем из этой выборки уже селектить количество нужного размера. Anyway, ничего невозможного

-- подсмотреть нужные option_id опции размера и цвета в табличке oc_option_description
-- задать значения переменным
SET @size_option_id = 14;
SET @color_option_id = 14;
-- подсмотреть нужные option_value_id в табличке oc_option_value_description для размер = XL и цвет = белый)
-- задать значения переменным
SET @size_id = 52;
SET @color_id = 52;
-- подсмотреть нужный id-шник товара ваших штанов
-- задать значения переменным
SET @product_id = 105;

 -- погнали считать... 
set @product_option_id_size = (SELECT product_option_id FROM oc_product_option_value WHERE product_id = @product_id AND option_id =  @size_option_id AND option_value_id = @size_id LIMIT 1);
set @product_option_id_color = (SELECT product_option_id FROM oc_product_option_value WHERE product_id = @product_id AND option_id =  @size_color_id AND option_value_id = @color_id LIMIT 1);

SELECT
 sum(opov.quantity) 
FROM oc_product_option_value opov
WHERE opov.product_id = @product_id
  AND opov.product_option_id IN (@product_option_id_size, @product_option_id_color)
  AND opov.option_value_id IN (@size_id, @color_id);


 

 

Edited by 100napb
Link to comment
Share on other sites

если прямо очень надо посчитать именно средствами SQL, то без проблем могу помочь написать верный запрос. Мне не сложно, если есть тестовые данные.

 

Другое дело, что запрос выше написан буквально на коленке, без возможности проверить корректность результата. Я уверен, что выше предложил почти то, что нужно. Возможно, нужно уточнить буквально пару условий. Но т.к. мотивации лично у меня нет что-то городить в своей базе и тратить значимое количество времени для решения Вашей задачки, то... могу дать 100% рабочий результат лишь при условии доступов хотя бы на селект в Вашу базу. В принципе, даже доступа к нескольким таблицам хватило б.... там делов на 5 минут.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

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.