Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Связывание таблиц по части поля  [new]
InnushkaUkr
Member

Откуда:
Сообщений: 11
Есть 2 таблицы c символьными полями
В первую таблицу поступают номера телефонов
с кодами городов, а во второй находятся телефоны без кодов
Не для всех записей таблицы table1 есть соответствие в table2

table1 ------------- table2
pole1 -------------- pole2

567780025 ------ 7780025
569532224 ------ 532224
569211215 ------ 11215
569211216
569532258 ------ 532258

Нужно связать эти таблицы по этим полям с помощью left join.
Можно ли это сделать и как корректно это сделать?
Спасибо заранее всем откликнувшимся!
1 дек 11, 18:08    [11691654]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51780

InnushkaUkr
Можно ли это сделать и как корректно это сделать?

В чём проблема использовать LIKE как условие для JOIN?

Posted via ActualForum NNTP Server 1.4

1 дек 11, 18:13    [11691697]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
'569532258' like '%532258'
1 дек 11, 18:13    [11691704]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
InnushkaUkr
Member

Откуда:
Сообщений: 11
Dimitry Sibiryakov,

И вправду ничего не мешает :)
Вот так вроде получилось.

select t1.pole1,t2.pole2
from table1 t1 left join table2 t2 on t1.pole1 like '%'||t2.pole2

Скажите, если раньше телефоны поступали с одним и тем же кодом города и мы использовали конструкцию
select t1.pole1,t2.pole2 from table1 t1, table2 t2 where substr(t1.pole1,2)=t2.pole2(+)
(обрезали код города и связывали)
можно ли сделать что-то подобное like в пределах такой конструкции?
Простите, если мой вопрос некорректный и спасибо огромное за ответ!
1 дек 11, 18:56    [11691983]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51780

InnushkaUkr
(обрезали код города и связывали)

Странно как-то вы это делали... Код города бывает от двух до пяти цифр. Простым substr его
не обрезать, хоть убейся.

Posted via ActualForum NNTP Server 1.4

1 дек 11, 19:08    [11692058]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
InnushkaUkr,

попробуй не удалять код города из pole1, а напротив добавлять его к pole2.

pole1 = lpad(pole2, 9, '5692')
2 дек 11, 00:35    [11693182]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
InnushkaUkr
Member

Откуда:
Сообщений: 11
Dimitry Sibiryakov,

Тогда задача ставилась проще.Мы знали, что телефоны в таблицу будут поступать только с одним кодом города и длина номера телефона будет фиксирована.Как всегда - пользователям задача пришлась по душе и они захотели в таблицу запускать номера разной длины и с разными кодами городов.Теперь вот ломаю голову как вырулить.
2 дек 11, 10:34    [11694044]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
InnushkaUkr
Member

Откуда:
Сообщений: 11
mcureenab,

Спасибо, это тоже хороший вариант!!!!
2 дек 11, 10:41    [11694094]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
ALocky
Member

Откуда: Понаехал из Подмосковья
Сообщений: 747
InnushkaUkr
Теперь вот ломаю голову как вырулить.

Построили сарай. Пользователям понравилось, попросили добавить этажей. Получили 10-ти этажный сарай.
Надо не костыли навешивать а заново вместо сарая дом строить.
2 дек 11, 10:59    [11694219]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
InnushkaUkr
Member

Откуда:
Сообщений: 11
ALocky,

Не усугубляйте, всего лишь небольшой ремонт
2 дек 11, 11:29    [11694519]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
Алексей Черепанов
Member

Откуда: Краснодар
Сообщений: 423
Нипаняяятная задача.
Почему телефон 9-значный?
Занимался я как-то телефонными делами.
И вместо того, чтобы городить непонятно что, проще оказалось понять, что код города - это как бы не 2-5 значное число. Его - в принципе нет :)
Все телефоны сейчас - десятизначные.
Просто принято считать первые три цифры - регионом, далее - 7-значный номер.
Однако, иногда один код региона может попадать на две, например, области (например, 913), с другой стороны - Нерезиновой и так не хватает.

И при бытовом использовании граждане постоянную часть этого (например, первые 1-2-5-7 цифры) выносят в код. Вот и получается, что у одного областного (ну, скажем так, краевого) центра, например, код пишут 861, но при этом все 7-значные номера начинаются с двойки, а у другого принято - 3812 и номера - 6-значные. А у его райцентра код 38160 и пятизначный номер , однако ВСЕ пятизначные номера начинаются на 21 :) А в соседней деревне - на 24.
При этом и там и там и там (да и в соседней области) все ходят с мобилками, у которых считают код 913, а номер - семизначным.
Отсюда и вся путаница в головах.

Поэтому тут самое правильное - хранить полные, 10-значные номера. Не оделяя их от "кода".
А код, то есть первые N знаков номера с названием населенного пункта - в другой табличке.

Вот потому и "нипаняяятная задача" - номер хранится неполный, 9 знаков, да ещё и его хвост - отдельно.
2 дек 11, 13:10    [11695617]     Ответить | Цитировать Сообщить модератору
 Re: Связывание таблиц по части поля  [new]
Алексей Черепанов
Member

Откуда: Краснодар
Сообщений: 423
Про 10-значные, это я только Россию имел в виду :) Дальше - больше.
5 дек 11, 10:47    [11705228]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить