Предположим, у меня эти три таблицы: пользователи, категории и users_categories (многие-ко-многим).Как сделать внутреннее соединение, сохраняя другие столбцы для group_concat?
Я пытаюсь получить всех пользователей и их категорий, так что это было бы что-то вроде этого:
SELECT users.*, GROUP_CONCAT(DISTINCT categories.name separator '/') clist
FROM users
LEFT JOIN users_categories ON users_categories.user = users.id
LEFT JOIN categories ON categories.id = users_categories.category
Довольно просто. Теперь, твердая часть, я хочу отобразить всех пользователей, которые находятся в определенной категории, но все равно сохраняют тот же список категорий в GROUP_CONCAT. Делая следующий запрос показывает только пользователей в той или иной категории, как и ожидалось, но обрезает остальные категории он принадлежит в:
SELECT users.*, GROUP_CONCAT(DISTINCT categories.name separator '/') clist
FROM users
LEFT JOIN users_categories ON users_categories.user = users.id
LEFT JOIN categories ON categories.id = users_categories.category
INNER JOIN categories cmust ON cmust.id = categories.id AND cmust.name = 'categoryhere'
Как бы я изменить этот последний запрос? Благодарю.
EDIT: Выборочные данные с только названиями колонок:
ПОЛЬЗОВАТЕЛЕЙ стол:
id, name:
1, myname
2, anothername
3, hisname
ТАБЛИЦЫ:
id, name
1, music
2, art
3, sports
USERS_CATEGORIES стол:
user, category
1,1
1,2
2,2
3,1
3,3
3,2
Желаемая QUER y без категории поиска (как в моем первом запросе):
users.id,users.name,clist
1,'myname','music/art'
2,'anothername','art'
3,'hisname','music/sports/art'
Желаемый результат запроса С категорией поиска. Скажем, только пользователи в категории «музыка». users.id, users.name, CLIST
1,'myname','music/art'
3,'hisname','music/sports/art'
Это последнее, что я хочу сделать. Я просто хочу удалить пользователей NOT в указанной категории и сохранить остальные категории, к которым они принадлежат.
Можете ли вы разместить образцы данных, пожалуйста? – Rachcha
данные образца и желаемые результаты –
@echo_me Просто добавлены некоторые примеры данных, спасибо. –