powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка дублей по 2-м полям
25 сообщений из 25, страница 1 из 1
Выборка дублей по 2-м полям
    #39765170
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос который выбирает дубли по 2 полям:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
clients.*,
COUNT(*) AS repeat,
GROUP_CONCAT(CONCAT(phone, ", ", email) SEPARATOR "<br/>") AS phone_email
FROM clients
GROUP BY phone, email
HAVING repeat > 1



Он у меня выбирает дубли одновременно совпадают 2 поля phone и email
А как можно сделать что бы дублями считались и такие записи:

Это считается дублем:
89085769667 mail@mail.ru
89085769667 andrey@mail.ru

Это тоже дубли:
89085769667 mail@mail.ru
89228235973 mail@mail.ru

Спасибо.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765186
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11,

А головой подумать, не?
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765189
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если "в лоб" решать, то в простейшем варианте можно добавить ещё два запроса с соответствующими условиями и объединить результаты через UNION.

Выражение clients.* выглядит странным. Какие конкретно данные (запись) оно должно вернуть, когда под условия выборки попадают несколько записей? Что-то вроде GROUP_CONCAT(id) кажется более внятным.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765198
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, поверьте если бы я мог бы сделать сам или найти в сети, я бы тут не спрашивал, поэтому спасибо MikkiMouse за ах-ю помощь)
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765201
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11,

Почитайте про EXISTS.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765236
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так верно отрабатывает, но хочется узнать чисто для знания и наверно более грамотнее, можно обойтись без UNION?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT
clients.*,
COUNT(*) AS repeat,
GROUP_CONCAT(CONCAT(phone, ", ", email) SEPARATOR "<br/>") AS phone_email
FROM clients
GROUP BY phone
HAVING repeat > 1
 
UNION
 
SELECT
clients.*,
COUNT(*) AS repeat,
GROUP_CONCAT(CONCAT(phone, ", ", email) SEPARATOR "<br/>") AS phone_email
FROM clients
GROUP BY email
HAVING repeat > 1
 
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765241
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11Это считается дублем:
89085769667 mail@mail.ru
89085769667 andrey@mail.ru

Это тоже дубли:
89085769667 mail@mail.ru
89228235973 mail@mail.ruА вот это:
89085769667 mail@mail.ru
89085769667 andrey@mail.ru
89081234567 andrey@mail.ru
?

В общем случае записи могут образовывать граф большого размера. Их все считать за одну группу?
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765247
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftdok11Это считается дублем:
89085769667 mail@mail.ru
89085769667 andrey@mail.ru

Это тоже дубли:
89085769667 mail@mail.ru
89228235973 mail@mail.ruА вот это:
89085769667 mail@mail.ru
89085769667 andrey@mail.ru
89081234567 andrey@mail.ru
?

В общем случае записи могут образовывать граф большого размера. Их все считать за одну группу?

Да это тоже...
Вообще, система постоянно отслеживает появление таких записей и предлагает модератору объединить таких клиентов в одного, поэтому в реальности не будет больших объёмов. Отслеживание дублей нужно, потому что есть схема быстрого заказа, без регистрации - где предлагается ввести тел или почту... далее модератор уже решает в какого клиента слить дубли...
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765251
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11система постоянно отслеживает появление таких записей и предлагает модератору объединить таких клиентов в одногоА чего сразу не поставить уникальные индексы, исключающие повторение номеров телефонов и почты?
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765253
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У ТС ветер в голове.
Атрибуты phone и email независимы, никак не связаны друг с другом.
Поэтому нужен простой select distinct phone union all select distinct email.
Либо пусть попытается объяснить, что должно получиться здесь:
phoneemail1a2a2b2c3c3a
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765257
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkledok11система постоянно отслеживает появление таких записей и предлагает модератору объединить таких клиентов в одногоА чего сразу не поставить уникальные индексы, исключающие повторение номеров телефонов и почты?

Я же говорю, схема быстрого заказа есть, нужно максимально просто и быстро сделать покупку для посетителя, Вы же предлагаете мне проверить на дубль в системе и пользователю сообщить - типа такой тел или почта уже есть, Вы уже покупали у нас, давайте ищите свой логин и пароль и заходите... и тд и тп, кому нужно сами войдут под своими данными.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765260
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.,

Это всё сливаем в 1.

Например был чел:

email: mail@mail.ru
Тел: 8888888888

Завтра он сменил номер, почта осталась прежней (или наоборот), модератор должен это отследить и принять решение куда (в какого клиента) слить дубли.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765289
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11Вы же предлагаете мне проверить на дубль в системе и пользователю сообщить - типа такой тел или почта уже есть, Вы уже покупали у нас, давайте ищите свой логин и пароль и заходите...Процитируйте, слова или фразу, где я это сказал.
А фантазировать можете как Вам угодно.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765305
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,
авторА чего сразу не поставить уникальные индексы, исключающие повторение номеров телефонов и почты?

Значит не будет возможности внести запись в БД, с дублем, правильно? Значит мне юзеру нужно чего то сказать, почему он не может купить "Здесь и сейчас", правильно? Спрашивается накой ему такие качели? Поэтому я так и написал... Нужно максимально упростить схему покупки, вот и всё)
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765308
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11Завтра он сменил номер, почта осталась прежней (или наоборот), модератор должен это отследить и принять решение куда (в какого клиента) слить дубли.
dok11где предлагается ввести тел или почту..
некоторое противоречие
а как быть если введено только что-то одно?

с другой стороны - человек сменил номер, но очень большая вероятность что этот номер достался от кого-то другого - будет ли правильным их объединять?
но есть ещё вариант - у человека есть несколько номеров

как бы 21794763 нормальный вариант.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765317
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяdok11Завтра он сменил номер, почта осталась прежней (или наоборот), модератор должен это отследить и принять решение куда (в какого клиента) слить дубли.
dok11где предлагается ввести тел или почту..
некоторое противоречие
а как быть если введено только что-то одно?

с другой стороны - человек сменил номер, но очень большая вероятность что этот номер достался от кого-то другого - будет ли правильным их объединять?
но есть ещё вариант - у человека есть несколько номеров

как бы 21794763 нормальный вариант.

Да, насчёт, достался от кого то другого и несколько номеров - Вы правы, но и оставлять так тоже не гуд, у нас есть покупашки которые делают постоянно покупки и пишут разные номера, а по сути это 1 клиент, очень неудобно работать с клиентской базой... Мы смотрели как сделано на популярных cms, там именно такой подход...

Если есть варианты логики - буду рад услышать.
В общем то есть регистрация в системе, в этом случае этот вопрос отваливается, но почти 45% совершают заказы "В 1 клик", откр. окно Ваш Е-маил и Тел, и кнопка отправить, в результате такая таблица с клиентами см. вложение...
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765321
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11Значит не будет возможности внести запись в БД, с дублем, правильно?В общем, да, так как идентификатор пользователя (покупателя) уже имеется в базе. Его вполне можно определить и использовать в данной транзакции или покупке.

dok11Значит мне юзеру нужно чего то сказатьНесомненно, нужно!

dok11почему он не может купить "Здесь и сейчас", правильно?Это глупости, конечно.
Скажите, покупателю, что рады его вновь видеть в магазине, что не забыли его, что по соответствию почтового адреса добавили в ЛК в качестве контактного новый его номер телефона или по соответствию номера телефона добавили новый почтовый адрес.

dok11Нужно максимально упростить схему покупки, вот и всё)Гипотетически, на этапе оформления заказа можно было бы и адрес доставки предложить из прежних вариантов, которые использовал покупатель с ранее зафиксированным номером телефона или почтовым адресом. Они же есть в базе. Но делать этого нельзя, так как пользователь не авторизован и поэтому должен напечатать адрес ручками. А будь он авторизован - тады дело другое, тады проще.

Вопросов валидности или подтверждения адреса и номера на данном этапе можно не касаться, хотя, вопрос безопасности, конечно, остается. Однако, в ЛК это можно автоматизировать по довольно простым алгоритмом, не слишком привлекая администратора для "слияния".

dok11Спрашивается накой ему такие качели?Вообще, вариантов идентификации пользователя есть гораздо более двух. Насколько понимаю, в существующей схеме сущность "Покупатель" отсутствует, как таковая и Вы пытаетесь создать ее неявным образом, группируя некоторые признаки сущностей "Покупка". Ну так себе качели.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765328
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11,

ну такие скрины лучше не выкладывать
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765329
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЭто глупости, конечно.
Скажите, покупателю, что рады его вновь видеть в магазине, что не забыли его, что по соответствию почтового адреса добавили в ЛК в качестве контактного новый его номер телефона или по соответствию номера телефона добавили новый почтовый адрес.


В задницу они слали, наше приветствия и личные кабинеты, как я писал выше почти половину покупок совершается в 1 клик. Покупашке проще что бы ему тут же перезвонили и обтележили всё, доставку, сумму, скидки, и подарки....

Вообще, Вам не лень писать столько, вопрос же в другом... можете помочь? спасибо, здоровья, нет, проходите мимо...
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765330
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяdok11,

ну такие скрины лучше не выкладывать

Да от балды там инфа, конечно)
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765345
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11вопрос же в другом... можете помочь?Выше я уже высказался по исходному вопросу, предложил вариант объединения нескольких запросов в один. Не годится такой вариант - так и скажите, что не годится. Мне лично такой вариант тоже не нравится. Будет ли он ресурсоемким? Несомненно, как любой статистический запрос по таблице в целом.

dok11В задницу они слали, наше приветствия и личные кабинетыНе хотите - можете не говорить. Сам ЛК суть сущность "покупатель" с его контактными данными, историей покупок и т.п. Вне зависимости, заходит в него покупатель или нет. Вы же одновременно и пытаетесь определить покупателя по его данным и, если правильно Вас понимаю, отрицаете необходимость существования такой сущности как лишней.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765354
dok11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНе хотите - можете не говорить. Сам ЛК суть сущность "покупатель" с его контактными данными, историей покупок и т.п. Вне зависимости, заходит в него покупатель или нет. Вы же одновременно и пытаетесь определить покупателя по его данным и, если правильно Вас понимаю, отрицаете необходимость существования такой сущности как лишней.

Да есть кабинет, я говорю пока не очень им пользуются, и очень кстати удобный, со всеми историями, сравнениями товаров и прочей ерундой. А покупка и заказ у нас по сути Вы правы разные сущности, заказ имеет вначале статус - как входящий, далее по мере исполнения статусы меняются (их всего может быть 7) и в итоге он может иметь статус выполнен - по сути Покупка... У нас как то так всё...

Вообще то у нас при редактировании клиента выводится вся инфа за него по дублям, просто хотелось отдельно сделать выборку например раз в неделю - что видеть всю сводную по всем дублям.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765370
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11отдельно сделать выборку например раз в неделю - что видеть всю сводную по всем дублямВ принципе, для разовой задачи можно за производительность и ресурсы особо не волноваться. Лишь бы в ресурсы сервера не уперлись.
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765389
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11,
в таких условиях решение через union является наверно оптимальным, но не отражает реальных данных
т.е. не позволяет однозначно связать всё в единую клиента-тел-мыло
...
Рейтинг: 0 / 0
Выборка дублей по 2-м полям
    #39765664
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dok11нужно максимально просто и быстро сделать покупку для посетителя
dok11Если есть варианты логики - буду рад услышать.
Если задача именно такая - максимально упростить быстрый заказ,- то единственно правильная логика одна. И она очень простая - ничего не проверять и никакие дубли не искать. Делаете заказ, и всё.

А вот если он захочет зарегаться, то тогда и начнёте после регистрации пытать вопросами типа "Вы указали мыло v.pupkin@host.ru с телефоном 111222333444, ранее у нас был заказ с тем же мылом, но телефоном 999888777666. Это тоже Ваш заказ, но у Вас изменился номер телефона? или это Ваш второй номер, и Вы хотели бы его также сохранить в профиле?"
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка дублей по 2-м полям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]