MySQL запрос для сфинкса - PullRequest
0 голосов
/ 11 мая 2009

Не уверен, как это сделать. Запрос не нужно выполнять быстро ... он для индекса сфинкса ... но он должен включать все данные для поиска.

Вот структура таблицы:

person
- main_id
- name

person_attritubes
- attribute_id
- name (example: hair, eyes, height)

person_details
- main_id
- attribute_id
- value (example: blond, brown, blue, green, 5'6", 6'5")

Как получить все person_attritubes.name в виде столбцов и person_details.value в качестве строк для этих столбцов в одном запросе?

Ответы [ 2 ]

0 голосов
/ 12 мая 2009

Нашел другое решение.

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

SELECT 
person.main_id AS id, name,
GROUP_CONCAT(person_details.value SEPARATOR ' ') AS content 
FROM person
INNER JOIN person_details ON (person.main_id = person_details.main_id)
GROUP BY person_details.main_id
0 голосов
/ 11 мая 2009

Присоединиться к таблице person_details несколько раз. Вы должны знать идентификаторы атрибутов, хотя.

SELECT ...,pd1.value AS hair, pd2.value AS eyes FROM person p, person_details pd1, person_details pd2 WHERE p.main_id=pd1.main_id AND pd1.attribute_id=[id for hair] AND p.main_id=pd2.main_id AND pd2.attribute_id=[id for eyes] ...etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...