У меня есть набор таблиц
- Документы
- Группы
- Ключевые слова
Они связаны следующим образом
- Документ имеет и принадлежит ко многим группам
- Документ имеет и принадлежит ко многим ключевым словам
Я хочу создать запрос, который выбирает все документы, создавая разные записи для каждой группы (потому что мне нужно будет выбирать по группе), который также GROUP_CONCATs объединяет все ключевые слова в одно поле.
Причина в том, что я использую sphinx для индексации таблицы документов, и мне нужно индексировать заголовок, контент и ключевые слова. Я также должен иметь возможность фильтровать по группе.
Вот что у меня есть:
SELECT
Link.document_id AS id,
Link.group_id AS db_id,
Document.title,
Document.description,
Group.name AS db_name,
GROUP_CONCAT(distinct Keyword.`content` SEPARATOR ", ") as `keywords`
FROM `groups_documents` AS Link
LEFT JOIN `documents` AS `Document` ON (Document.id = Link.document_id)
LEFT JOIN `groups` AS `Group` ON (`Group`.id = Link.group_id)
LEFT JOIN `keywords_documents` AS `KLink` ON (`KLink`.`document_id` = `Link`.`document_id`)
LEFT JOIN `keywords` AS `Keyword` ON (`Keyword`.`id` = `KLink`.`keyword_id`)
но, к сожалению, это не работает, у меня только один ряд.