Убрать дубли из результата запроса

199
15 декабря 2016, 15:53
SELECT cp.phone, cm.email, client.id  
FROM client  
LEFT JOIN client_phones cp ON cp.client_id = client.id  
LEFT JOIN client_emails cm ON cm.client_id = client.id  

у клиента есть несколько телефонов и email. после такого запроса получаются дубли, что-то типа CROSS JOIN
как устранить дубликаты? в таблицах client_phones, client_emails нет уникального id записи, но есть delta (инкримент для конкретного клиента)

текущий результат получается такой:

phone              mail        id
8-000-0000-00   one@yandex.ru   1
8-000-0000-00   two@yandex.ru   1
8-000-0000-01   one@yandex.ru   1
8-000-0000-01   two@yandex.ru   1
+70000          test@list.ru    2

тк для id = 1, создано по 2 мыла и телефона

Answer 1
SELECT client.id, GROUP_CONCAT(DISTINCT concat(cp.phone, cm.email) SEPARATOR "|") as phone_and_mail
FROM client  
LEFT JOIN client_phones cp ON cp.client_id = client.id  
LEFT JOIN client_emails cm ON cm.client_id = client.id
GROUP BY client.id
Answer 2

Так:

SELECT client.id, 'phone' as info_type, cp.phone as info
FROM client  
  JOIN client_phones cp ON cp.client_id = client.id  
UNION ALL
SELECT client.id, 'email', cm.email
FROM client
  JOIN client_emails cm ON cm.client_id = client.id
READ ALSO
Бан по IP не работает [закрыто]

Бан по IP не работает [закрыто]

Написал простейший скрипт бана пользователя по IP с использованием базы данных, но он почему то не хочет работатьВ чем может быть проблема?

158
Выборка данных из большой таблицы MySQL

Выборка данных из большой таблицы MySQL

Доброе утро, друзьяУ меня есть большая таблица заказчиков: t_customer с 10

208
Помогите организовать SQL-запрос

Помогите организовать SQL-запрос

У меня есть такая таблица:

147