Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Подскажите с запросом   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
15-1161867167
ReWQ
2006-10-26 16:52
2006.11.12
Помогите, пожалуйста!


15-1161868276
Сергей М.
2006-10-26 17:11
2006.11.12
TRACE MODE 6


15-1161777727
Vlad
2006-10-25 16:02
2006.11.12
Дублирование сообщений в форумах. Вопрос.


2-1161951937
Начинающий209
2006-10-27 16:25
2006.11.12
Виртуальные методы


15-1161501966
Ketmar
2006-10-22 11:26
2006.11.12
забыл, как по-русски называется цвет иконки %-)