Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

Рекомендованные сообщения

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

 

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

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

 

Опция цвет:

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

 

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

Изменено пользователем d0tb0t
Ссылка на комментарий
Поделиться на других сайтах


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

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

P.S.

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

Изменено пользователем krumax
Ссылка на комментарий
Поделиться на других сайтах


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

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

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

 

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

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

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

Ссылка на комментарий
Поделиться на других сайтах


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

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

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

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

 

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

Изменено пользователем d0tb0t
Ссылка на комментарий
Поделиться на других сайтах


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

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

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

 

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

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

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

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

Изменено пользователем d0tb0t
Ссылка на комментарий
Поделиться на других сайтах


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

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

Ссылка на комментарий
Поделиться на других сайтах


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

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

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

 

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

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

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

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

Ссылка на комментарий
Поделиться на других сайтах


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

Изменено пользователем krumax
Ссылка на комментарий
Поделиться на других сайтах


  • 3 недели спустя...

привет. 

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

Ссылка на комментарий
Поделиться на других сайтах

@ArtShatov Вся пляска ради подсчёта и обновления остатков. Откуда вы знаете когда последнее поступление было?

Ссылка на комментарий
Поделиться на других сайтах


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

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

Ссылка на комментарий
Поделиться на других сайтах


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

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

 

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

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

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

 

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

 

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

 

Ссылка на комментарий
Поделиться на других сайтах

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

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

 

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

Ссылка на комментарий
Поделиться на других сайтах


  • 4 месяца спустя...
7 минут назад, sethtm сказал:

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

  


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

Ссылка на комментарий
Поделиться на других сайтах

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

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

 

Изменено пользователем niger
Ссылка на комментарий
Поделиться на других сайтах


у меня в магазине нет подобного примера, к сожалению: нет товара с двумя опциями.Потому проверить достоверность результатов не могу. Но вроде все решаемо. попробуйте вот так. Возможно, нужно будет ограничить поиск, предварительно сделав выборку ТОЛЬКО белых штанов, а затем из этой выборки уже селектить количество нужного размера. 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);


 

 

Изменено пользователем 100napb
Ссылка на комментарий
Поделиться на других сайтах

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.