Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Условия выборки в MySQL

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
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)

Сюда надо как-то добавить условие на наличие указанного значения свойства в группе свойств...
Но как это сделать, я не знаю Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_pm



Зарегистрирован: 26.08.2006
Сообщения: 55

СообщениеДобавлено: Пт Дек 29 2006 01:17    Заголовок сообщения: Ответить с цитатой

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

Закон сохранения наверное...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
litvinenko



Зарегистрирован: 15.12.2006
Сообщения: 5
Откуда: Таганрог

СообщениеДобавлено: Пт Дек 29 2006 01:51    Заголовок сообщения: Ответить с цитатой

стрктуру БД выдумывал не я.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...