Запрос mysql
Добрый день товарищи, такой вопрос, есть nn количество таблиц в mysql которые содержат в себе два поля (id, number) в этих таблицах соответственно содержаться номера телефонов, и мне по запросу нужно со всех указанных таблиц вывести дубликаты ( совпадение номеров по всем указанным таблицам в запросе)
Сейчас я использую вот такой запрос: SELECT one.number, two.number, fri.number, count(*) as count FROM one, two, fri where one.number = two.number and two.number = fri.number GROUP BY one.number One, two, fri, это название таблиц, мне кажется что этот запрос работает не правильно |
Сначала такой вопрос - почему дубликаты ищутся во множестве таблиц, если "регистрация" телефона в базе всегда в одной таблице, обычно это таблица параметров пользователей?
|
Цитата:
|
А почему вы это делаете после добавления в базу, да и даже так, почему у вас все это помещается в разные таблицы? Это какая-то аляпистая структура базы получается.
Не знаю что содержат эти файлы, но, пусть и разных сумок берутся списки и помещаются в базу, и структура этих файлов одинакова. То есть номер телефона из какой бы сумки он не взят, будет помещаться всегда в одну таблицу как один из параметров сущности описываемой этими списками из сумок. Достаточно полю телефон указать уникальный ключ и дубликат в базу не будет записан. А у вас как-то все кверху каком получается. |
Я это конечно все понимаю, но у меня такая задача.... что нужно вот так делать... так какой запрос будет отрабатывать правильно?
|
Какой-то кошмар ей богу. А дубликаты могут быть только между таблицами или и в каждой из таблиц могут быть тоже дубликаты?
|
Цитата:
|
Для того чтобы вывести дубликаты в таблице нужно использовать группировку, то есть запрос типа:
"SELECT COUNT(field_name) duplicate, CONCAT('tel-', field_name) duplicate_name FROM table_name WHERE GROUP BY duplicate_name ORDER BY duplicate" Этот запрос вернет типа: 3 tel-77777777777 8 tel-99999999999 ..... Для того чтобы получить во всех таблицах их нужно соединить и поиск дубликатов искать в объединенной таблице по выше приведенному запросу, а CONCAT('tel-', field_name) duplicate_name, это нужно сформировать свое для каждой из таблиц при объединении. Но нельзя отобразить в одной группе разные сущности, то есть, если в таблице А и в таблице В есть дубликаты, при этом в таблице А таких 5, а таблице В 10, при этом алиасы полей этих дубликатов различны, то это будет две группы с количеством 5 и 10 показывающие одни и те же номера. Но может это как раз и нужно. |
Часовой пояс GMT +3, время: 07:22. |