Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Доброго времени суток.
Пытаюсь сделать фильтр товара.
Собственно, не могу придумать как реализовать подсчет значений параметра привязанных к товарам в одном запросе.
В общем имеем запрос
SELECT COUNT(param_prod_id)AS count FROM filter_param WHERE param_value_id = value_id
Т.е. нужно посчитать связи param_value_id = value_id
таблица filter_param как связь между товаром и значениями параметров
В итоге, выводить число param_prod_id(сколько к значению параметра привязано товаров)
Пробовал делать запрос в запросе, джоинить. Получается все время что-то не то(
EuGen
Отправлено: 26 Июля, 2012 - 09:18:55
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Не понятно до конца. Приведите структуру таблиц и бизнес-связей в Вашем приложении. А так же то, что хотелось бы получить (по возможности на примере).
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dropoff
Отправлено: 26 Июля, 2012 - 09:56:27
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
param_product_id - это id товара который привязывается к значению параметра param_value_id из второй таблицы.
Т.е. при редактировании товара я выбираю необходимые значения параметров и делаю между ними связь.
мне нужно посчитать сколько связей у value_id из второй таблицы с третьей param_value_id, чтобы вывести в списки количество связей. Образно говоря выводить количество товара привязанное к значению параметра.
Приложил скрин. То, что выделено красным - это количество товара привязанное к этим значениям параметров.
_ttp://i080.radikal.ru/1207/6a/89864b20dff7.png (Добавление)
Вообще я как бы первый раз делаю такое. По этому скорее всего что-то упускаю.
суть в том, чтобы посчитать количество товара привязанных к значениям параметров.
Например человек выбирает определенный параметры из списка. Нужно считать у скольких товаров еще остался этот параметр(выбранный), чтобы можно было продолжать отсеивать их дальше.
Пример _ttp://jorange.ru/uploaded/modules/Osnovnoe_960.jpg
Тут выбрано значение параметра и всплыло окошко "Выбрано продуктов 2"
Т.е. получился пересчет значений и связий с товарами.
Вот никак не получается въехать как это все организовать.
EuGen
Отправлено: 26 Июля, 2012 - 10:16:00
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Насчет третьей таблицы я не очень понял. Если по Вашей логике, Вы с самого начала начинаете привязывать некоторые параметры к категории, то почему потом Вы привязываете их к товару? Мне кажется, корректнее было бы помещать товар в категорию, которую уже в дальнейшем описывать параметрами. Но и сама схема такого описания кажется мне несколько странной. Так как изначальная задача здесь не озвучена, предложений по архитектуре делать не могу, но подумайте над ней.
По поводу выборки - это, насколько я понимаю,
LEFTJOIN filter_name ON filter_value.name_id=filter_name.id
LEFTJOIN filter_param ON filter_value.id=filter_param.value_id
GROUPBY
filter_param.value_id
WHERE
filter_name.cat=$cat
ORDERBY
filter_name.name
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dropoff
Отправлено: 26 Июля, 2012 - 10:19:56
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Есть параметр, скажем Цвет. У него есть значения: красный, синий, зеленый.
Так вот, я привязываю Параметр к категории, потому как в этой категории товары могут разных цветов. А вот к товару я уже выбираю необходимые Значения параметра, т.е. цвета. Потому как товар может быть только красного цвета и синего, а зеленого может быть другой товар из этой категории. (Добавление)
Спасибо, сейчас попробую запрос.
EuGen
Отправлено: 26 Июля, 2012 - 10:24:04
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
dropoff
Тогда не понятно, как можно создавать товары с собственными свойствами, ведь товары одной категории в общем случае могут разниться. Или же нужно очень мелко разбивать категории, чтобы максимально четко помещать в них все возможные ответствления свойств товаров, что в дальнейшем создаст трудности из-за их большого количества.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dropoff
Отправлено: 26 Июля, 2012 - 10:33:43
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Ну как. Если категория Телевизоры и к ней привязаны параметры: Диагональ(значения: 40", 47"), Разрешение (значения: 1024x768, 1365x768) и т.д... То есть все параметры именно для телевизоров.
Если в категории разнотипные параметры, то уже на усмотрение, какие параметры создавать и привязывать.
Может я Вашей мысли не понял? Я просто первый раз делаю такие связи. По этому могу что-то упускать в структуре.
EuGen
Отправлено: 26 Июля, 2012 - 10:37:06
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Я имел ввиду случаи, когда товар имеет свойства категории и в то же время некоторые уникальные свои, не присущие другим товарам в этой категории (установлен какой-либо нестандартный модуль и т.п.) - или же у него и вовсе отсутствуют некоторые свойства из назначенной ему категории.
В целом, если товары типовые, привязка к категории допустима, но если часты случаи обособленных товаров, такая привязка будет создавать сложности, которые я описал выше.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dropoff
Отправлено: 26 Июля, 2012 - 10:44:08
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Ну это только для какой-то общей фильтрации. Выводить полностью все "характеристики" товара в фильтр не обязательно.
А, видимо понял о чем Вы. Я делаю не набор из ВСЕХ параметров товара.
Все "характеристики" товаров забиваются отдельно в дополнительных полях.
А эти параметры - просто дополнительный функционал для удобного отсеивания товара.
Т.е. параметры не содержат все сразу, а только то, что добавит админи отдельно. (Добавление)
Попробовал запрос.
Вывелись не все параметры, а только те, к чьим значениям привязаны товары.
Можно как-то выводить все параметры и значения привязанные к категории?
Вот наглядный пример (прошу прощения за длинную ссыль) _ttp://mvideo.ru/listing1.php?dir=1&class=1&sort=4&direct=&filter=8%3D231_12%22%2830.5+%F1%EC%29;8=231_15.6%22(39.6%20%F1%EC)
Тут вот в левой колонке видно, что выделены значения параметра "Диагональ"
12"(30.5 см) (1)
15.6" (39.6 см) (1)
При этом те, которые пустые (имеют 0 товаров) то же выводятся, но выбрать их нельзя.
EuGen
Отправлено: 26 Июля, 2012 - 11:29:11
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Хм. Насколько я понимаю Вашу задачу, для этого достаточно применить RIGHT JOIN вместо LEFT JOIN на таблицу параметров (в предложенном мной запросе этот JOIN идет первым) - или же поменять местами присоединяющиеся таблицы.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dropoff
Отправлено: 26 Июля, 2012 - 11:45:32
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
неа. не получается. пробовал менять местами, менял LEFT на RIGHT.... (Добавление)
Вроде получилось.
заменил
GROUP BY
filter_param.value_id
на
GROUP BY
filter_value.value_id
вроде корректно все.
dropoff
Отправлено: 27 Июля, 2012 - 09:02:24
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
EuGen, спасибо, все работает.
Еще такой вопрос.
Есть параметры
Цвет
- Красный (товаров 1)
- Синий (товаров 3)
- Зеленый (товаров 0)
Количество товаров - это к скольким товарам привязаны цвета.
Помечаю чекбокс у Красный - выскакивает окошко, где написано "Найдено товаров: 1 - Смотреть"
Далее помечаю чекбокс у Синий - выскакивает окошко, где написано "Найдено товаров: ## - Смотреть"
Где ## - нужно вывести количество найденных товаров к которым привязаны ОБА параметра Красный и Синий.
Соответственно, результат может быть либо 1, либо 0
1 - оба цвета привязаны к одному товару (Красный - товаров 1)
0 - оба цвета привязаны к разным товарам
Если же выбрать ЕЩЕ и Зеленый (товаров 0) вместе с остальными, то результат должен быть 0, потому как он не привязан к товарам вообще
Значения товаров у меня приходят массивом, разбиваю их запятыми и
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.