У меня есть отношение многие ко многим пользователям и спорту, и я получаю объединенную строку всех спортивных имен, которые пользователь играет, используя подзапрос. Моя структура выглядит так:
user
===============
| id | name |
---------------
| 1 | Hugo |
| 2 | Paco |
| 3 | Luis |
---------------
sport
=================
| id | name |
-----------------
| 1 | tennis |
| 2 | football |
| 3 | handball |
-----------------
user_sport
======================
| user_id | sport_id |
----------------------
| 1 | 3 |
| 1 | 1 |
| 2 | 1 |
----------------------
как отфильтровать результаты с пользователями, которые играют в любой вид спорта, из списка, например, получить всех пользователей, которые играют в теннис или гандбол.
Я пытаюсь с этим запросом:
SELECT u.id, u.name,
COALESCE (
(SELECT GROUP_CONCAT(s.name SEPARATOR ', ')
FROM sport AS s
LEFT JOIN user_sport AS us ON us.sport_id = s.id
WHERE us.user_id = u.id),'') AS sports
FROM user u
WHERE us.sport_id IN (1,3)
GROUP BY u.id
ORDER BY g.name
но это не работает, потому что предложение where не знает таблицу user_sport
. Итак, я должен создать новое JOIN вне подзапроса?