litvinenko
Зарегистрирован: 15.12.2006 Сообщения: 5 Откуда: Таганрог
|
Добавлено: Пн Дек 18 2006 10:22 Заголовок сообщения: Условия выборки в MySQL |
|
|
Добрый день, ув. знатоки.
Вопрос у меня по MySQL.
Есть некая база из нескольких таблиц.
1. продукт (ид, имя, описание)
2. свойства (ид, название)
3. значение свойства (ид, значение)
4. группа свойств (ид, ид свойства, ид значения свойства)
5. свойства продукта(ид продукта, ид свойства, ид значения свойства)
6. категории (ид, ид родителя, название)
7. группа категории (ид категории, ид группы)
Так вот. Задача состоит в том, чтобы выбрать продукты по указанной категории.
Связь происходит так:
если для любой из групп свойств, принадлежащих категории, все свойства и (при наличии) значения этих свойств - полностью входят в набор свойств и (при наличии в группе) значений, принадлежащих товару, то товар связан с категорией __добавочка__ , при наличии в группе нескольких значений свойства, необходимо совпадение хотя бы по одному из них __
Так вот. У меня проблема: выбираются товары, у которых есть хотя бы _одно_ свойство со значением, совпадающим со свойством и значением группы, привязанной к данной категории...
Пример запроса:
Код: |
SELECT DISTINCT prod.product_id, prod.name product_name, prod.description
FROM category ct
INNER JOIN group_category grc ON (ct.category_id=grc.category_id AND ct.category_id='%category_id%')
INNER JOIN group_property grp USING(group_id)
INNER JOIN product_property prprop USING (property_id, property_value_id)
INNER JOIN product prod USING (product_id)
WHERE (
SELECT COUNT(DISTINCT gp.property_id) from group_property gp INNER JOIN product_property pp USING (property_id, property_value_id) WHERE gp.group_id = grp.group_id)
=
(SELECT COUNT(DISTINCT property_id) FROM group_property WHERE group_id = grp.group_id);
|
Помогите плиз.
У меня такое подозрение, что проблема в этой строке:
Код: |
INNER JOIN product_property prprop USING (property_id, property_value_id)
|
Сюда надо как-то добавить условие на наличие указанного значения свойства в группе свойств...
Но как это сделать, я не знаю  |
|