|
|
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
извините, нашла ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 13:12 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Akina, низкий Вам поклон! Помогли, спасибо огромное! Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 13:14 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11вот следующая лапшаРусским вроде по белому пишу: алиас КАЖДОМУ полю... и что мы видим? все поля, кроме тех, что в секции ON - голенькие... Кстати, весьма странно, что запрос в таком виде вообще выполняется, хотя по уму сервер должен был бы нецензурно высказаться в смысле Error 1052 Column '%s' in %s is ambiguous... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 13:21 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Akinaи что мы видим? все поля, кроме тех, что в секции ON - голенькие... Кстати, весьма странно, что запрос в таком виде вообще выполняется, хотя по уму сервер должен был бы нецензурно высказаться в смысле Error 1052 Column '%s' in %s is ambiguous... простите, не ошиблась и не тот код вставила, сейчас всё работает абсолютно верно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 13:27 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Добрый день,уважаемые специалисты! в продолжении начатой темы, есть ли еще какие-нибудь ещё решения для учета номеров среди которых есть те, к которым добавлены слева цифры 89? конструкция предложенная ранее: Код: plsql 1. 2. 3. 4. выполняется, но не работает, то есть не учитывает номера начинающиеся с 89... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 14:22 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11, Предложенный ранее вариант с вычитанием категорически не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 14:28 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11не учитываетЗапрос ничего не учитывает - это не нормировщик на заводе... Запрос возвращает набор записей в соответствии с заложенной в его текст логикой отбора. Выражайтесь яснее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 14:46 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
Akina Запрос возвращает набор записей в соответствии с заложенной в его текст логикой отбора. Выражайтесь яснее...Буду стараться, спасибо. Опять я создала ложную тревогу, запрос с вашей,Akina, помощью возвращает то что надо...была база не обновлена из-за этого был неожиданный результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 15:59 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11Здравствуйте, есть такой запрос Код: plsql 1. мне необходимо к этому запросу добавить условие, что один и тот же номер(phone) может начинаться цифрами 8938 или 38, например: 89381000000000 или 381000000000 -это тот же самый номер. Подскажите пожалуйста как это сделать. Я сейчас не могу проверить в программе, поэтому придумала вот что: AND phone like '8938%'=phone like'38%' но сомневаюсь, что это правильно, поэтому прошу подправить меня телефоны в БД хранятся в 3х полях: cn int -- код страны code smallint num int индекс только по num, поиск по num + code + cn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 18:19 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
полудухтелефоны в БД хранятся в 3х полях:Зависит от задачи. Задача ТС не кажется мне той задачей, где это актуально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2018, 23:04 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
что "это"? обычный удобный способ хранения телефонов и на задачу ещё раз посмотри, повнимательней авторможет начинаться цифрами 8938 или 38 авторAND phone like '8938%'=phone like'38%' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2018, 03:35 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
полудухчто "это"? обычный удобный способ хранения телефонов и на задачу ещё раз посмотри, повнимательней авторможет начинаться цифрами 8938 или 38 авторAND phone like '8938%'=phone like'38%'При таком раскладе начальные цифры 89 не относятся ни к одному из этих полей. Если их сохранять, то в какое поле? Если их очищать при записи, то единое поле все равно удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2018, 23:17 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
miksoftЕсли их сохранять, то в какое поле? cn как это не относятся, если это код страны? Если их очищать при записи если юзер шлёт с формы страну, зачем их очищать? у нас конкретная ситуация - телефоны со странами, к чему эти фантазии? единое поле все равно удобнее. в едином поле будет сначала код, потом номер и это индекс на 10 цифр, вместо 7. Поиск по code вернёт 10000+ num, в которых снова искать, а поиск по num всего 1-2 code. в каком месте тут "удобнее"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2018, 00:20 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
полудухкак это не относятся, если это код страны?Нет, это префикс выхода на городскую линию офисной АТС, частью номера не является. И такого кода страны не существует. А вот следующие цифры 381 - код Сербии. полудухв едином поле будет сначала код, потом номер и это индекс на 10 цифр, вместо 7.Это индекс на одно поле, а не на три. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2018, 01:06 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
miksoftполудухкак это не относятся, если это код страны?Нет, это префикс выхода на городскую линию офисной АТС, частью номера не является. И такого кода страны не существует. А вот следующие цифры 381 - код Сербии. полудухв едином поле будет сначала код, потом номер и это индекс на 10 цифр, вместо 7.Это индекс на одно поле, а не на три. префикс никто не пишет в БД речь про КОД СТРАНЫ. где ты там 3 индекса увидел? полудух индекс только по num , поиск по num + code + cn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2018, 14:35 |
|
||
|
Сравнение номеров телефона
|
|||
|---|---|---|---|
|
#18+
hatter11Добрый день,уважаемые специалисты! в продолжении начатой темы, есть ли еще какие-нибудь ещё решения для учета номеров среди которых есть те, к которым добавлены слева цифры 89? .. ну например приказ минсвязи регламентирующий передачу этих самых номеров. который не всегда исполняется. может все-таки при вставке будете приводить к единому виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2018, 09:04 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1829545]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 165ms |

| 0 / 0 |

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