Изменить текущий запрос MySql для объединения результатов на основе идентификатора

В моем текущем запросе собраны все судьи, которые подписались на мероприятия. Подзапрос в предложении In состоит в том, что событие может быть одним или несколькими днями, и судьи могут зарегистрироваться для одного или нескольких. Это нормально, но если его 2-дневное событие и судья подписываются для обоих, они возвращаются на 2 строки для пользователя. Я хочу объединить их, чтобы они отображали свою информацию плюс оба события. Как я могу это сделать?

select concat(ej.FirstName, ' ', ej.LastName) as judge, ej.email, ej.phone, ed.EventDate
from EventJudges ej 
inner join EventJudgeXref ejx on ej.Id = ejx.EventJudgeId 
inner join EventDates ed on ejx.EventDateId = ed.Id
where ejx.EventDateId in(SELECT Id FROM EventDates WHERE EventId = 1) 
order by ej.FirstName asc, ej.LastName asc

В таблице EventJudgeXref содержатся JudgeId на JudgeId и EventDateId.

1 ответ

Попробуйте использовать group_concat:

select concat(ej.FirstName, ' ', ej.LastName) as judge,
 ej.email,
 ej.phone,
 group_concat(ed.EventDate) as EventDate
from EventJudges ej 
inner join EventJudgeXref ejx on ej.Id = ejx.EventJudgeId 
inner join EventDates ed on ejx.EventDateId = ed.Id
where ejx.EventDateId in(SELECT Id FROM EventDates WHERE EventId = 1) 
group by ej.Id
order by ej.FirstName asc, ej.LastName asc

SQL Fiddle

licensed under cc by-sa 3.0 with attribution.