У меня был запрос, который объединяет 4 таблицы.Таблицы пользователя, user_info, адрес электронной почты и телефон.У пользователя может быть один или несколько телефонов и электронных писем.
Вот запрос sql:
SELECT ur.login_id as loginId, ue.user_email_address as email, up.phone_number as phone
FROM greydeltadb.gd_user ur
LEFT JOIN greydeltadb.gd_user_info uri ON uri.user_id=ur.user_id
INNER JOIN greydeltadb.gd_user_emails ue ON ur.user_id = ue.user_id
INNER JOIN greydeltadb.gd_phone up ON ur.user_id = up.user_id
ORDER BY ur.login_id
Когда я выполняю этот запрос, я получаю такой результат для пользователя с 2 электронными письмами и 2Телефоны:
loginId email phone
abc abc@gmail.com 123456
abc abc@gmail.com 798446
abc def@gmail.com 123456
abc def@gmail.com 798446
Тогда я узнал о GROUP_CONCAT () обновленный запрос:
SELECT ur.login_id, GROUP_CONCAT(ue.user_email_address) as emails,
GROUP_CONCAT(up.phone_number) as phones
FROM greydeltadb.gd_user ur
LEFT JOIN greydeltadb.gd_user_info uri ON uri.user_id=ur.user_id
INNER JOIN greydeltadb.gd_user_emails ue ON ur.user_id = ue.user_id
INNER JOIN greydeltadb.gd_phone up ON ur.user_id = up.user_id
GROUP BY ur.login_id
этот запрос возвращает результат:
loginId email phone
abc abc@gmail.com, def@gmail.com,abc@gmail.com, def@gmail.com 123456, 798446,123456, 798446
Но я хочувывод будет:
loginId email phone
abc abc@gmail.com, def@gmail.com 123456, 798446
Пожалуйста, помогите.