I had a query that joins 4 tables. Tables are user, user_info, email and phone. A user can have one or more phones and emails.
Here is the sql query:
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
When I execute this query i get result like this for a user with 2 emails and 2 phones:
loginId email phone
abc [email protected] 123456
abc [email protected] 798446
abc [email protected] 123456
abc [email protected] 798446
Then I learnt about GROUP_CONCAT() the updated query is:
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
this query returns the result:
loginId email phone
abc [email protected], [email protected],[email protected], [email protected] 123456, 798446,123456, 798446
But I want the output to be:
loginId email phone
abc [email protected], [email protected] 123456, 798446
Please help.