@Qu1eeeOJ

Как в sql запросе присоединить таблицу и получить все значения столбца?

Здравствуйте, пишу проект и встал в ступор с одним запросом.
Есть таблица users в ней следующие поля: id, name, role, group_id
Также есть таблица attendances в ней следующие поля: id, user_id, status, date
date - хранится в формате 2021-03-01

Я пишу вот такой запрос:
select `users`.`name`, `users`.`surname`, `users`.`middle_name`, `attendances`.*, users.id AS user_id from `users` left join `attendances` on `attendances`.`user_id` = `users`.`id` where `users`.`group_id` = 1 and `users`.`role` = 0 group by `users`.`id`


И вот в чём проблема. Если у человека в attendances будет несколько записей, то этот запрос вернёт несколько, а мне нужно, чтобы была одна и все значения из attendances, которые соответствуют условию. (group by - спасает от дублирования пользователей, но если его убрать, то будут дубликаты)
  • Вопрос задан
  • 56 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Это неудобно делать один запросом - вы либо сначала получаете данные о пользователе, а потом отдельно обо всех его посещениях, либо только о посещениях, джойните туда пользователя и используете данные о нём только из первой строки, но приходят они во всех.

Есть ещё варианты с конкатенацией и построением JSON, но они неудобные, а запрос получается громоздким.

Первый вариант, понятно, самый адекватный. Но если вам из attendances нужна только одна колонка, то конкатенация её значений тоже будет нормальным решением.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы