У меня есть следующий запрос:
SELECT ev.q1, ev.comments, es.session_number, es.title, CONCAT( np.first_name, ' ', np.last_name ) AS speaker
FROM `expo_session_eval` ev
LEFT JOIN expo_session es ON es.session_id = ev.session_id
LEFT JOIN expo_session_speaker ess ON ess.session_id = ev.session_id
LEFT JOIN expo_speaker sp ON sp.speaker_id = ess.speaker_id
LEFT JOIN new_people np ON np.id = sp.people_id
GROUP BY CONCAT( np.first_name, ' ', np.last_name )
ORDER BY es.session_number
Это возвращает данные, которые выглядят так:
session_id q1 comments session_number title speaker
===================================================================================
169 3 Good! 103 Digital Practices Steve Bullock
169 3 Good! 103 Digital Practices Sheila Bacon
170 1 104 LBS = Location Based Patrick Moorhead
Это правильно, потому что в expo_session_eval есть две записи для session_id 169,но это неверно в том, что значения q1 и comments не идентичны.В expo_session_speaker есть две записи, которые соответствуют session_id 169 - то есть есть две колонки для этой одной сессии.
В идеале я хотел бы, чтобы мои результаты выглядели так:
session_id q1 comments session_number title speaker
===============================================================================================
169 3 Good! 103 Digital Practices Steve Bullock, Sheila Bacon
169 5 Great! 103 Digital Practices Steve Bullock, Sheila Bacon
170 1 104 LBS = Location Based Patrick Moorhead
Я пытался использовать GROUP_CONCAT, но, видимо, я не использую его правильно, потому что, когда я использую этот запрос:
SELECT ev.session_id, ev.q1, ev.comments, es.session_number, es.title, GROUP_CONCAT( CONCAT( np.first_name, ' ', np.last_name ) ) AS speaker
FROM `expo_session_eval` ev
LEFT JOIN expo_session es ON es.session_id = ev.session_id
LEFT JOIN expo_session_speaker ess ON ess.session_id = ev.session_id
LEFT JOIN expo_speaker sp ON sp.speaker_id = ess.speaker_id
LEFT JOIN new_people np ON np.id = sp.people_id
ORDER BY es.session_number
я получаю это:
session_id q1 comments session_number title speaker
===============================================================================================
169 3 Good! 103 Digital Practices Steve Bullock,Sheila Bacon,Patrick Moorhead
Что мне нужносделать, чтобы сделать колонку динамика group_concat в пределах session_id?
РЕДАКТИРОВАТЬ ДЛЯ @ NOAH
Основная таблица - expo_session_eval - в каждой записи хранится идентификатор сеансаЭти идентификаторы взяты из таблицы expo_session.Существует таблица перекрестных ссылок с именем expo_session_speaker, которая содержит только два столбца - session_id и speaker_id.Есть еще одна таблица speaker_id, которая содержит speaker_id и people_id.people_id связывает таблицу с таблицей с именем new_people, которая содержит first_name и last_name.
В expo_session_speaker может быть несколько записей для данного session_id - каждая запись соответствует одному сеансу и одному оратору.Таким образом, чтобы отобразить ВСЕ говорящие для данного сеанса, вы получите несколько записей.Вот тут и пришла идея группы по / group_concat;Мне нужно отобразить ВСЕ динамики для данного сеанса во ВСЕХ записях для этого сеанса.Следовательно, в сеансе 169 записи 1 выступают Стив Баллок, Шейла Бэкон, а в сеансе 169 запись 2 выступают одинаково, хотя ни одно из других выбранных значений не будет одинаковым для двух сеансов 169 записей.
(Ясно, как грязь, верно?)