Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите с запросом


port ©   (2006-10-24 11:56:00) 

Добрый день.
Помогите пожалуйста с запросом.
Есть таблица
ID|street
---------
1 |23
2 |25
3 |25
n |x
---------
поле Street привязано к таблице Streets,
23 | Ленина
25 | Сталина
n  | street

Возможно ли запросом в первой таблице изменить номера на названия улиц.
т.е. я поменял тип поля street первой табл. на String, и теперь нужно вместо номеров подставить названия улиц, согласно второй таблице.
таблица уже содержит больше 1000 записей и вручную их не хочется менять.


port   (2006-10-25 11:38:00) [1]

> [8] ЮЮ ©   (25.10.06 04:17)
> where CAST( street.num as varchar(5)) = clients.street

Спасибо большое, получилось. :)

Вот только не могу въехать, почему первый вариант не работал. Ведь изначально поле Clients.Street имело тип Integer ( Client.Street = Street.Num), я его изменил на VarChar, соответственно в запросе Update делал обратное.


ЮЮ   (2006-10-25 04:17:00) [2]

как интересно работает CAST (clients.street as INTEGER) в случае, если там уже стоит наименование улицы? Может конвертировать в другую сторону?

where CAST( street.num as varchar(5)) = clients.street


port   (2006-10-24 16:19:00) [3]

> [5] RebroFF   (24.10.06 13:49)
>
> проблема здесь

Проблемы здесь нет, по большей части информация о клиенте выводится не в лукап поле, а в стринг листе и как таковая в заказе не используется.
А добавлять указанную улицу в табл. улиц (повторюсь) в моем случае не имеет смысла.


> Переписывать плохо спроектированную базу, заполненую данными?
> Ну-ну...

Блин, ну не предусмотрел, бывает.
-----------------------------------------------------

> [6] Anatoly Podgoretsky ©   (24.10.06 14:21)
> Вообще то приведенная структуры никак не похоже на справочник
> клиентов. Это какая то не нужная таблица, что то перенормализовано.

Я не приводил полную структуру. Это лишь пример поставленной задачи для решения которой я советуюсь с Вами.
--------------------------------------------------------
Ребят, я же не прошу за меня проектировать структуру, я лишь прошу помочь с конкретным вопросом.


Anatoly Podgoretsky   (2006-10-24 14:21:00) [4]

Вообще то приведенная структуры никак не похоже на справочник клиентов. Это какая то не нужная таблица, что то перенормализовано.


RebroFF   (2006-10-24 13:49:00) [5]


> не всегда в табл. улиц есть указанная улица и тогда адресу
> клиента присваивается значение NULL.

проблема здесь

> К тому же в заказе адрес клиента носит лишь визуальный характер.

Это удел всех лукап-полей.

> К сожалению, когда я это понял, в базе уже собралось достаточно
> записей

Переписывать плохо спроектированную базу, заполненую данными?Ну-ну...


port   (2006-10-24 13:34:00) [6]

Справочник улиц необходим для заказов (т.е. адрес заказа). Также в заказе указывается телефон и адрес клиента, но адрес клиента не обязательно привязан к адресу заказа и если при добавлении заказа клиент отсутствует в базе то он добавляется в базу. Но при добавлении клиента в базу не всегда в табл. улиц есть указанная улицаи тогда адресу клиента присваивается значение NULL.
Добавлять при этом новую улицу (в моем случае) не имеет смысла. К тому же в заказе адрес клиента носит лишь визуальный характер.
К сожалению, когда я это понял, в базе уже собралось достаточно записей.
------------------------------------------------------------------------
Я пытался сделать что-то вроде этого:
UPDATE clients SET
STREET = (SELECT street.name
           FROM street
           where street.num = (CAST (clients.street as INTEGER))
         )
where (NOT clients.street is NULL)

------------------------------------------------------
Запрос вроде выполняется, только изменений в базе ни каких.
Подобный запрос на выборку работает, а на изменение нивкакую.  :(


Anatoly Podgoretsky   (2006-10-24 13:12:00) [7]


> Возможно ли запросом в первой таблице изменить номера на
> названия улиц.

Можно, но не нужно, интерсно откуда такая мысль пришла в голову.
Про нормализацию почитай.


Sergey13   (2006-10-24 12:54:00) [8]

> [0] port   (24.10.06 11:56)

А надо ли это делать?
Есть ссылка на улицы. Зачем переносить инфу. Для просмотраможно просто объединить таблицы в запросе.


ЮЮ   (2006-10-24 12:02:00) [9]

Восможно.
См. синтаксис UPDATE для твоей СУБД


Наверх

Титульная страница Поиск, карта сайта Написать письмо