Название плохое, надеюсь, пример прояснит это.
У меня есть событие.Событие имеет теги.
(Упрощенно) Я показываю событие так:
SELECT
*.event,
GROUP_CONCAT(tag.name)
FROM event
JOIN tag
ON event.tag_id = tag.id
GROUP BY event.id
Скажем, я хочу отфильтровать его и получить только те события, которые имеют tag.id = 2
Но все же показываютвсе событие, со всеми его тегами.
SELECT
*.event,
GROUP_CONCAT(tag.name)
FROM event
JOIN tag
ON event.tag_id = tag.id
WHERE tag.id = 2
GROUP BY event.id
Это не сработает, так как будет правильно показывать детали события, но только тег с номером 2
Я почти уверен, что упустил что-то очень простое,что это ?: -)
Решения, которые мне известны:
- Получить теги позже, после того, как я загрузил детали события.
- Использовать внутренний запрос вместо
GROUP_CONCAT(tag.name)
для извлечения текущих тегов событий
Оба мне кажутся "не чистыми".