Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизПодскажите с запросом Найти похожие ветки
← →
port (2006-10-24 11:56) [0]Добрый день.
Помогите пожалуйста с запросом.
Есть таблица
ID|street
---------
1 |23
2 |25
3 |25
n |x
---------
поле Street привязано к таблице Streets,
23 | Ленина
25 | Сталина
n | street
Возможно ли запросом в первой таблице изменить номера на названия улиц.
т.е. я поменял тип поля street первой табл. на String, и теперь нужно вместо номеров подставить названия улиц, согласно второй таблице.
таблица уже содержит больше 1000 записей и вручную их не хочется менять.
← →
ЮЮ © (2006-10-24 12:02) [1]Восможно.
См. синтаксис UPDATE для твоей СУБД
← →
Sergey13 © (2006-10-24 12:54) [2]> [0] port (24.10.06 11:56)
А надо ли это делать?
Есть ссылка на улицы. Зачем переносить инфу. Для просмотра можно просто объединить таблицы в запросе.
← →
Anatoly Podgoretsky © (2006-10-24 13:12) [3]
> Возможно ли запросом в первой таблице изменить номера на
> названия улиц.
Можно, но не нужно, интерсно откуда такая мысль пришла в голову.
Про нормализацию почитай.
← →
port (2006-10-24 13:34) [4]Справочник улиц необходим для заказов (т.е. адрес заказа). Также в заказе указывается телефон и адрес клиента, но адрес клиента не обязательно привязан к адресу заказа и если при добавлении заказа клиент отсутствует в базе то он добавляется в базу. Но при добавлении клиента в базу не всегда в табл. улиц есть указанная улица и тогда адресу клиента присваивается значение NULL.
Добавлять при этом новую улицу (в моем случае) не имеет смысла. К тому же в заказе адрес клиента носит лишь визуальный характер.
К сожалению, когда я это понял, в базе уже собралось достаточно записей.
------------------------------------------------------------------------
Я пытался сделать что-то вроде этого:
UPDATE clients SET
STREET = (SELECT street.name
FROM street
where street.num = (CAST (clients.street as INTEGER))
)
where (NOT clients.street is NULL)
------------------------------------------------------
Запрос вроде выполняется, только изменений в базе ни каких.
Подобный запрос на выборку работает, а на изменение нивкакую. :(
← →
RebroFF (2006-10-24 13:49) [5]
> не всегда в табл. улиц есть указанная улица и тогда адресу
> клиента присваивается значение NULL.
проблема здесь
> К тому же в заказе адрес клиента носит лишь визуальный характер.
Это удел всех лукап-полей.
> К сожалению, когда я это понял, в базе уже собралось достаточно
> записей
Переписывать плохо спроектированную базу, заполненую данными?Ну-ну...
← →
Anatoly Podgoretsky © (2006-10-24 14:21) [6]Вообще то приведенная структуры никак не похоже на справочник клиентов. Это какая то не нужная таблица, что то перенормализовано.
← →
port (2006-10-24 16:19) [7]> [5] RebroFF (24.10.06 13:49)
>
> проблема здесь
Проблемы здесь нет, по большей части информация о клиенте выводится не в лукап поле, а в стринг листе и как таковая в заказе не используется.
А добавлять указанную улицу в табл. улиц(повторюсь) в моем случае не имеет смысла.
> Переписывать плохо спроектированную базу, заполненую данными?
> Ну-ну...
Блин, ну не предусмотрел, бывает.
-----------------------------------------------------
> [6] Anatoly Podgoretsky © (24.10.06 14:21)
> Вообще то приведенная структуры никак не похоже на справочник
> клиентов. Это какая то не нужная таблица, что то перенормализовано.
Я не приводил полную структуру. Это лишь пример поставленной задачи для решения которой я советуюсь с Вами.
--------------------------------------------------------
Ребят, я же не прошу за меня проектировать структуру, я лишь прошу помочь с конкретным вопросом.
← →
ЮЮ © (2006-10-25 04:17) [8]как интересно работает CAST (clients.street as INTEGER) в случае, если там уже стоит наименование улицы? Может конвертировать в другую сторону?
where CAST( street.num as varchar(5)) = clients.street
← →
port (2006-10-25 11:38) [9]> [8] ЮЮ © (25.10.06 04:17)
> where CAST( street.num as varchar(5)) = clients.street
Спасибо большое, получилось. :)
Вот только не могу въехать, почему первый вариант не работал. Ведь изначально поле Clients.Street имело тип Integer (Client.Street = Street.Num
), я его изменил на VarChar, соответственно в запросе Update делал обратное.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c