|
MySQL.RU - Webboard
Вернуться
О наболевшем (X-Ander) 02/06/2003 - 11:54:09
Re: Всегда есть выбор :) (Валентин) 02/06/2003 - 12:31:58
Re: Всегда есть выбор :) (X-Ander) 02/06/2003 - 13:00:27
From: X-Ander - 02/06/2003 - 11:54:09
Subject:О наболевшем
-----------------
Продолжаю тему, начатую в треде "Как достать строку из текста?"
Господа Валентин и walrus! То ли я такой тупой, то ли ещё что, но никак не могу сообразить, как же организовать в "хорошей" схеме поиск по всем свойствам предмета. А это - главная задача!
Напомню. Была предложена "хорошая" схема БД:
таблица предметов:
- уникальный номер
- название
таблица свойств:
- уникальный номер
- название
таблица предметы-свойства:
- уникальный номер предмета
- уникальный номер свойства
- значение свойства
Теперь допустим, что имеется предмет, обладающий среди прочих следующими свойствами:
свойство 1: "картошка печёная"
свойство 2: "капуста солёная"
свойство 3: "морковка варёная"
А запрос (в "житейском" смысле слова) был дан на поиск слов "картошка", "капуста" и "морковка". Наш предмет ДОЛЖЕН быть найден по этому запросу! Но как этот запрос записать на SQL? Я уже мозг сломал.
Запрос вида
select уникальный_номер_предмета
from предметы_свойства
where
position("картошка" in значение_свойства) > 0 &&
position("капуста" in значение_свойства) > 0 &&
position("морковка" in значение_свойства) > 0;
ни к чему хорошему не приведёт - наш предмет найден НЕ БУДЕТ!
Искать в этом случае надо не по значениям отдельных свойств, а по их конкатенации, то есть по строке "картошка печёная капуста солёная морковка варёная". Как же можно построить конкатенацию строк, находящихся в РАЗНЫХ записях таблицы? Можно, конечно, построить конкатенацию заранее и записать в специальное поле таблицы "предметы", но это, опять же, нарушит нормализацию и усложнит добавление/обновление/удаление записей.
Вот так. Если у кого-нибудь есть мысли по этому поводу, буду признателен, если поделитесь.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
8890
|
|