Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2020, 12:31
Аспирант
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 92

Запрос 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, это название таблиц, мне кажется что этот запрос работает не правильно
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2020, 15:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сначала такой вопрос - почему дубликаты ищутся во множестве таблиц, если "регистрация" телефона в базе всегда в одной таблице, обычно это таблица параметров пользователей?
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2020, 18:55
Аспирант
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 92

Сообщение от laimas Посмотреть сообщение
Сначала такой вопрос - почему дубликаты ищутся во множестве таблиц, если "регистрация" телефона в базе всегда в одной таблице, обычно это таблица параметров пользователей?
Таблицы собираются из exel файлов, а файлы exel собираются непосредственно по регионам, так вот мне нужно устанавливать пересечения номеров
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2020, 19:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А почему вы это делаете после добавления в базу, да и даже так, почему у вас все это помещается в разные таблицы? Это какая-то аляпистая структура базы получается.

Не знаю что содержат эти файлы, но, пусть и разных сумок берутся списки и помещаются в базу, и структура этих файлов одинакова. То есть номер телефона из какой бы сумки он не взят, будет помещаться всегда в одну таблицу как один из параметров сущности описываемой этими списками из сумок. Достаточно полю телефон указать уникальный ключ и дубликат в базу не будет записан. А у вас как-то все кверху каком получается.

Последний раз редактировалось laimas, 11.11.2020 в 19:39.
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2020, 01:18
Аспирант
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 92

Я это конечно все понимаю, но у меня такая задача.... что нужно вот так делать... так какой запрос будет отрабатывать правильно?
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2020, 02:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Какой-то кошмар ей богу. А дубликаты могут быть только между таблицами или и в каждой из таблиц могут быть тоже дубликаты?
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2020, 10:45
Аспирант
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 92

Сообщение от laimas Посмотреть сообщение
Какой-то кошмар ей богу. А дубликаты могут быть только между таблицами или и в каждой из таблиц могут быть тоже дубликаты?
Дубликаты только между таблицами, в самих таблицах дубликатов нет
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2020, 16:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Для того чтобы вывести дубликаты в таблице нужно использовать группировку, то есть запрос типа:
"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 показывающие одни и те же номера. Но может это как раз и нужно.

Последний раз редактировалось laimas, 13.11.2020 в 08:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mysql запрос через командную строку отвечает результатом через скрипт выдает ошибку riaron Node.JS 1 28.09.2020 10:22
Как написать mysql запрос в javascript? Timur85 AJAX и COMET 69 13.08.2020 06:48
Запрос MySQL с регуляркой MC-XOBAHCK Серверные языки и технологии 17 24.07.2019 09:40
MySQL запрос INSERT INTO allonemoon Серверные языки и технологии 1 02.05.2017 05:30
Двойной запрос mysql Mateus Серверные языки и технологии 13 18.03.2016 12:36