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 мыла и телефона
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
Так:
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Написал простейший скрипт бана пользователя по IP с использованием базы данных, но он почему то не хочет работатьВ чем может быть проблема?
Доброе утро, друзьяУ меня есть большая таблица заказчиков: t_customer с 10