Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
5-1142506194
Ice
2006-03-16 13:49
2006.11.12
Перекрытый Paint.


15-1161348441
Dmytro
2006-10-20 16:47
2006.11.12
mssql и php


3-1158044838
SergP.
2006-09-12 11:07
2006.11.12
Как узнать тип поля в открытом датасете?


2-1161730544
Raptoridze
2006-10-25 02:55
2006.11.12
webbrowser и кукисы


2-1161802535
Батя
2006-10-25 22:55
2006.11.12
как вставить в memo текст





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский