|
|
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, есть такой запрос Код: plsql 1. мне необходимо к этому запросу добавить условие, что один и тот же номер(phone) может начинаться цифрами 8938 или 38, например: 89381000000000 или 381000000000 -это тот же самый номер. Подскажите пожалуйста как это сделать. Я сейчас не могу проверить в программе, поэтому придумала вот что: AND phone like '8938%'=phone like'38%' но сомневаюсь, что это правильно, поэтому прошу подправить меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:15 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11Подскажите пожалуйста как это сделать.Хранить номера телефонов в едином международном формате. Например, в случае российских кодов, приводить '8-495-123-45-67' к '74951234567'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:24 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
а если в базе в таком виде как я привела, разве ничего нельзя придумать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:27 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
или вот так Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:30 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11придумала вот что: Код: sql 1. Гарантированный False вне зависимости от значения. hatter11необходимо к этому запросу добавить условие, что один и тот же номер(phone) может начинаться цифрами 8938 или 38 Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:33 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Akinahatter11придумала вот что: Код: sql 1. Гарантированный False вне зависимости от значения. hatter11необходимо к этому запросу добавить условие, что один и тот же номер(phone) может начинаться цифрами 8938 или 38 Код: sql 1. 2. 3. 4. Спасибо Akina, попробую! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:38 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11а если в базе в таком виде как я привела, разве ничего нельзя придумать?Связь таблиц по полям с преобразованием строк всяко тормознее получится, чем связь по числовым полям с нормализованными данными. В этом смысле сделать можно, конечно, но насколько хорошо оно будет работать с таблицами в десять тысяч, сто тысяч или в миллион строк - это вопрос. На тестовых сотне строк, конечно, не заметите проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:44 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Akina, к сожалению работает только на поиск номеров 381000000000, а нужно чтобы попадали номерами начинающимися с 89 то есть такой же номер только впереди с двумя цифрами 89 381000000000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 09:20 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11работает только на поиск номеров 381000000000, а нужно чтобы попадали номерами начинающимися с 89 то есть такой же номер только впереди с двумя цифрами 89 381000000000Неправильно используете, значит. Показывайте текст запроса. И не забудьте объяснить, что же он делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 09:30 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Akinahatter11работает только на поиск номеров 381000000000, а нужно чтобы попадали номерами начинающимися с 89 то есть такой же номер только впереди с двумя цифрами 89 381000000000Неправильно используете, значит. Показывайте текст запроса. И не забудьте объяснить, что же он делает. весь запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. есть две таблицы users_phones_temp upt, где находятся id пользователя и его phone(в этой таблице номера не повторяются и все они в формате 381000000000) и таблица calls_per_month_temp cpmt, в которой в столбце dst находятся номера телефонов в 2-х форматах: 381000000000 и 89 381000000000 и могущие повторятся, также в этой таблице есть поле disposition содержащее значения ANSWERED... В запросе я должна посчитать количество звонков по каждому юзеру(id из первой таблицы); звонки могут быть отвеченные/не отвеч/сбой/занят - и для каждого варианта считаю количество звонков. Связь с двумя таблицами у меня происходит по phone, но так как один и тот же номер во второй таблице может принимать 2 варианта, то на данный момент считаются номера только в формате 381000000000. Как-то надо придумать чтобы сравнивались оба варианта из второй таблицы с номером телефона из первой таблице, где номера только в одном формате 381000000000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 09:53 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
должно быть 3 столба: cn 7 code 123 num 4567890 и индекс по num а вот это всё - сжечь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 09:54 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Сейчас результат такой: Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 09:55 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11может начинаться цифрами 8938 или 38, например: 89381000000000 или 381000000000 -это тот же самый номер. 89381000000000 — это не номер. Номер это 381000000000. 8 — это выход на междугороднюю линию. 9 — это выход на международнюю линию. Все эти выходы никакого отношения к номеру не имеют, да и они могут отличаться. Поэтому, как сказали в первом же ответе, все телефонные номера нужно хранить в международном формате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 10:54 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11в 2-х форматах: 381000000000 и 89 381000000000 hatter11Как-то надо придумать чтобы сравнивались оба варианта из второй таблицы с номером телефона из первой таблице, где номера только в одном формате 381000000000.Самое правильное - добавить столбец с нормализованными данными. Костыльные варианты: - Брать последние 12 символов ненормализованных данных и сравнивать по ним. Ну тут по ситуации, конечно, если только все номера содержат именно 12 знаков. - Перед сравнением вычесть из номера 89000000000000, если он больше этого значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 10:56 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Alibek B.hatter11может начинаться цифрами 8938 или 38, например: 89381000000000 или 381000000000 -это тот же самый номер. 89381000000000 — это не номер. Номер это 381000000000. 8 — это выход на междугороднюю линию. 9 — это выход на международнюю линию. Все эти выходы никакого отношения к номеру не имеют, да и они могут отличаться. Поэтому, как сказали в первом же ответе, все телефонные номера нужно хранить в международном формате. это не выход на международную линию..... система учета звонков помечает таким образом повторно набранные звонки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 10:57 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
полудухcn 7 code 123 num 4567890 и индекс по num Неверно, индекс должен быть по полному номеру. Поэтому смысла хранить номер в трех полях нет. Более того, номера телефонов лучше хранить как числа, так как требуемая числовая точность (11 разрядов) в MySQL вполне доступна, а кода страны, начинающегося с нуля, не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 10:59 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11это не выход на международную линию..... система учета звонков помечает таким образом повторно набранные звонки Это вообще не важно. Суть в том, что все эти префиксы не относятся непосредственно к телефонному номеру и хранить их не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 11:00 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Alibek B.hatter11это не выход на международную линию..... система учета звонков помечает таким образом повторно набранные звонки Это вообще не важно. Суть в том, что все эти префиксы не относятся непосредственно к телефонному номеру и хранить их не нужно. может и не нужно, но я не админ БД, только неделю работаю с базой, у меня задача узнать какое количество раз был набран каждый телефон, поэтому номера с префиксом имеют значение для решения задачи. Как-то же можно придумать, что можно сделать для поиска с учетом этого префикса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 11:05 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Если эти префиксы и пометки что-то значат, то их нужно хранить в БД, но отдельно от номера (в отдельном столбце). Сам номер должен быть очищен от мусора. А если его хранить как число, то это сократит занимаемый объем и может ускорить выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 11:07 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11весь запросЭто лапша, а не запрос. Если в источнике данных более одной таблицы (даже если это две копии одной таблицы) - следует указывать алиас таблицы для КАЖДОГО поля. Иначе получится не запрос, а вот такая нечитаемая хрень. hatter11 Код: sql 1. 2. 3. 4. 5. :facepalm: Вы не пробовали думать, прежде чем код писАть??? Каким бы ни было значение поля phone из неуказанной таблицы (кроме нуля и null) - CASE вернёт ненулевое значение, которое будет воспринято как True (если же значение ноль, то наоборот, False, а если Null, то CASE, да и всё выражение связывания, тоже будет null, интерпретируемый как False). Вместо этого бреда нужно преобразованное оператором CASE значение поля phone неуказанной таблицы приравнять соответствующему значению некоего поля другой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 11:27 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
всё равно не получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 11:50 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Повторяю. Первое: AkinaПоказывайте текст запроса Второе: Akinaалиас таблицы для КАЖДОГО поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 12:11 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Да, имеется в виду, что и первое, и второе - ОДНОВРЕМЕННО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 12:12 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Alibek B.полудухcn 7 code 123 num 4567890 и индекс по num Неверно, индекс должен быть по полному номеру. Поэтому смысла хранить номер в трех полях нет. Более того, номера телефонов лучше хранить как числа, так как требуемая числовая точность (11 разрядов) в MySQL вполне доступна, а кода страны, начинающегося с нуля, не существует. после нахождения номера там останется 1-10 строк (1 в 99% случаев) смысл есть ещё и потому, что cn может иметь 6 цифр это и есть числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 12:15 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
AkinaПовторяю. Первое: AkinaПоказывайте текст запроса Второе: Akinaалиас таблицы для КАЖДОГО поля Вы опять будете ругаться,но, простите меня за бред, я только учусь, вот следующая лапша: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=45&tid=1829545]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 392ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...