@loxnemamont

Возможно ли реализовать подобное средствами mysql?

Имеется 2 таблицы.

В первой таблице находится выгрузка всех диапазонов мобильных операторов, структура и пример записей:
e2b4a4931b9d43e3b7445de476538f0b.pngcb62c858f4644ce997ae77cc950e9429.png
Во второй таблице находятся данные пользователей, структура:
e2092412403d45b4a288859fc37f67bc.png
Вопрос 1:
Возможно ли получить из второй таблицы выборку всех пользователей по какому-либо критерию (например, городу) и в тоже время определить для указаных у пользователей телефонов определить оператора и регион из первой таблицы?

Вопрос 2:
Определение оператора для отдельно взятого номера (например, +7 925 1234567) делаю так:

SELECT opsos, region FROM ranges WHERE prefix=925 AND min<1234567 AND max>1234567

Правильно ли это? Возможно, есть более простой/лаконичный/менее ресурсоемкий способ?
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
idShura
@idShura
1. Если правильно понял, то как-то так:

SELECT T2.*, T1.OPSOS, T1.REGION
  FROM TABLE2 T2
       LEFT JOIN TABLE1 T1
          ON T1.PREFIX = T2.PREFIX
         AND T1.PHONE BETWEEN T2.MIN AND T2.MAX
 WHERE T2.SITY = 'Москва'
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Fortop
Tech/Team lead
Ответы строго в соответствии с вопросами.

1. Можно.
2. Правильно.
Ответ написан
chelkaz
@chelkaz
Что бы было менее менее ресурсоемко, выставите правильно Индексы на поля, по которым идет поиск и связи.
https://ruhighload.com/post/%D0%A0%D0%B0%D0%B1%D0%...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы