Есть таблица заказов, с полями id заказа, id клиента, email, телефон. Нужно вычленить уникальных клиентов при том что уже зарегистрированный клиент мог не авторизоваться при заказе, а так же мог указать в разных заказах - разные телефон и email.
Т.е. получается надо сгруппировать запрос не по уникальным значениям полей, а наоборот, при любом совпадении этих полей.
Примечание:
imit2010, твой запрос не подходит, в нем не учитывается, что в одном заказе могут встречаться и id и email и телефон, при том что некоторые из них могут быть уникальными в этом заказе, а некоторые встречаться в других заказах
Примечание:
hedint, по сути уникального значение -id, но есть пользователи не зарегистрированные, а следовательно не имеющие id. И для них уникального значения нет, есть совокупность email и телефонов для зарегистрированного пользователя. В принципе можно разбить задачу на две: вычленить зарегистрированных пользователей с id, это действительно решается group by id, и остается набор email и телефонов которые просто сгруппировать уже не получится, так надо сгруппировать все записи с одинаковыми телефонами и email.
Примечание:
Вот такой запрос вернул более менее то что нужно, однако если нужно будет еще разделить по датам, то он уже не годится:
select group_concat(DISTINCT id),group_concat(DISTINCT clients_id),GROUP_CONCAT(DISTINCT email),GROUP_CONCAT(DISTINCT phone),phone as telephone,count(*) from orders group by (case when clients_id IS NOT NULL then clients_id when email IS NOT NULL AND email!='' then email else telephone end);
p.s. Отдельное спасибо imit2010, еще не тестил, но по-моему твой вариант тоже должен дать то, что нужно.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.