Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

Поля   Найти похожие ветки 

 
Просто Я ©   (2004-04-27 14:31) [0]

Реально ли:

1)Переименовать поле NO на NO_NO сохранив данные этого поля?(через запрос)

 Пробовал через alter...., но тут получается удалять (drop), а потом создавать (add), заново это поле, данные удаляются. Может создавать отдельное поле, туда копировать (записей 100-200 не больше), удалять поле, создавать, а затем копировать данные в уже переименнованное поле???

(select pok_a, pok_b....pok_XX from pok)
2)Имееться 38 полей, необходимо отобразить 37, как подставить 37 полей в select, не перечисляя все 37. Может "*" , "-" то поле которое не нужно?


 
Reindeer Moss Eater ©   (2004-04-27 14:34) [1]

нереально


 
Просто Я ©   (2004-04-27 14:40) [2]

Reindeer Moss Eater ©   (27.04.04 14:34) [1]
нереально

Обрадовал, спасибо.


 
Соловьев ©   (2004-04-27 14:43) [3]


> Просто Я ©   (27.04.04 14:40) [2]

реально, это Reindeer Moss Eater © пошутил :)

select NO as NO_NO
from table


 
Курдль ©   (2004-04-27 14:43) [4]


alter TABLE_1 add FIELD_2 integer
/
insert into TABLE_1 (FIELD_2)
select TABLE_1 FIELD_1
/
alter TABLE_1 drop FIELD_1
/


 
Соловьев ©   (2004-04-27 14:46) [5]

Неужели такое не канает?

ALTER TABLE <имя таблицы> ALTER <поле1> TO <поле2>


 
Reindeer Moss Eater ©   (2004-04-27 14:50) [6]

То, про что спрашивалось - нереально.
Про другое я речь не вел.


 
Просто Я ©   (2004-04-27 14:57) [7]

Соловьев ©   (27.04.04 14:46) [5]
DM.ADOCommand1.CommandText:="alter table pokup ALTER no to no_no"; Что-то не канает.


 
Просто Я ©   (2004-04-27 15:04) [8]

Соловьев ©   (27.04.04 14:43) [3]
Переименовать не на время отображения, а переименовать поле.


 
sniknik ©   (2004-04-27 15:16) [9]

Соловьев ©   (27.04.04 14:46) [5]
> Неужели такое не канает?
не всезде, в pervasive можно, но чаще нельзя.


 
Соловьев ©   (2004-04-27 15:17) [10]


> Просто Я ©   (27.04.04 15:04) [8]

от этого завист работа программы?


 
Соловьев ©   (2004-04-27 15:18) [11]


> sniknik ©   (27.04.04 15:16) [9]

это ограничения провайдера? Может БДЕ - может такую штуку провернуть?


 
sniknik ©   (2004-04-27 15:23) [12]

> это ограничения провайдера?
скорее сервера БД.

> Может БДЕ - может такую штуку провернуть?
ну если через него работать с тем же pervasive то может.


 
Просто Я ©   (2004-04-27 15:29) [13]

Соловьев ©   (27.04.04 15:17) [10]
 Эээ, мне нужно переменовать поле не таблицы с которой работаю, а из которой идет копирование.

Все это возникла из непонятного поведения поля с именем "no"(текстовое, размер-50), при запросе
select no from pokup ,пишу в SQL Explorer, поле вместо нормального отображения поля, заголовок поля становиться Expr1000 и все значения 0, если переменовать это же поле, хотя бы в "no_no", все отображаеться нормально.


 
Курдль ©   (2004-04-27 15:31) [14]


> no

Скорее всего это зарезервированное слово!


 
Соловьев ©   (2004-04-27 15:36) [15]


> select no from pokup ,пишу в SQL Explorer, поле вместо нормального
> отображения поля, заголовок поля становиться Expr1000

ну так напиши
select [no] as no_no from pokup


 
Просто Я ©   (2004-04-27 15:39) [16]

Курдль ©   (27.04.04 15:31) [14]
А что же при select * from pokup, и поле и данные отображаеться нормально.


 
Erik ©   (2004-04-27 17:17) [17]

Зайди в MSAccess и все у тебя получится.


 
Просто Я ©   (2004-04-27 20:13) [18]

Erik ©   (27.04.04 17:17) [17]
 Такой млин умный, и где такие рождаются???А по-существу сказать не судьба.


 
YurikGl ©   (2004-04-27 21:40) [19]

Сначала создаешь новый столбец. Потом копируешь update stolb set NewSt=OldSt, потом удаляешь старый.

Переписал из книги Delphi3 и создание приложений БД


 
Просто Я ©   (2004-04-27 22:22) [20]

YurikGl ©   (27.04.04 21:40) [19]
Кажись я так и писал, тока позапутанней, это же сложновато будет осушествить на полях где имеються много (млн) записей, я думаю что все же это предусмотрели.

.....продолжаю поиске по всем источникам.


 
YurikGl ©   (2004-04-27 22:28) [21]

Щас сосканирую и выставлю целиком пример.


 
YurikGl ©   (2004-04-27 22:39) [22]

Пример. Пусть имеется таблица
CREATE TABLE SOTR(
ID_SOTR INTEGER NOT NULL PRIMARY KEY,
FIO CHAR(10) COLLATE PXW_CYRL,
OTDEL VARCHAR(IO) COLLATE PXW_CYRL,
DOLJNOST CHAR (10) COLLATE PXW CYRL
);
Пусть необходимо изменить характеристики столбца FIO, изменив тип столбца с CHAR(1O) на VARCHAR(25). Тогда:
1.   Добавляем в таблицу новый временный столбец FIO_TMP, полностью повторяющий характеристики изменяемого столбца FIO:
ALTER TABLE SOTR
ADD FIOJTMP CHAR(1O)   CHARACTER SET WIN1251 COLLATE PXW_CYRL;
2.   Копируем данные из FIO в FIO_TMP:
UPDATE SOTR SET FIO_TMP =   FIO;
3.   Удаляем столбец FIO:
ALTER TABLE SOTR DROP FIO;
4.   Создаем новый столбец FIO с необходимыми характеристиками:
ALTER TABLE SOTR
ADD FIO VARCHAR(25) COLLATE PXW_CYRL;
5.   Переписываем данные из временного столбца FIO_TMP в новый столбец      FIO:
UPDATE SOTR
SET FIO =  FIO_TMP;
6.   Удаляем временный столбец FIO_TMP:
ALTER TABLE SOTR DROP FIO_TMP;
ЗАМЕЧАНИЕ. Следует помнить, что изменение характеристик столбца, а также удаление столбца может закончиться неудачей, если:
•  столбец приобретает атрибуты PRIMARY KEY или UNIQUE, но старые значения в столбце нарушают требования уникальности данных;
• удаляемый столбец входил как часть в первичный или внешний ключ, что привело к нарушению ссылочной целостности между  таблицами;
•  столбцу были приписаны ограничения целостности CHECK на уровне таблицы;
•  столбец использовался в иных компонентах БД - в просмотрах,   триггерах, в выражениях для вычисляемых столбцов.
Все! вышесказанное свидетельствует о том, что в случае необходимости изменения атрибутов столбца или в случае удаления столбца, сначала необходимо тщательно проанализировать, какие последствия для таблицы и базы данных в целом может повлечь такое изменение или удаление.

Извиняйте, если какие символы не так распознались.


 
Просто Я ©   (2004-04-27 22:44) [23]

YurikGl ©   (27.04.04 22:39) [22]
Пасиба, думал над этим, даже делал, но это геморой, пока еще поищу.

Ты встречался с таким полем в Access? Просто Я ©   (27.04.04 15:29) [13]


 
YurikGl ©   (2004-04-27 22:46) [24]

> Ты встречался с таким полем в Access?
Каким именно?


 
Просто Я ©   (2004-04-27 23:03) [25]

YurikGl ©   (27.04.04 22:46) [24]
   вот здесь про него Просто Я ©   (27.04.04 15:29) [13]


 
YurikGl ©   (2004-04-27 23:46) [26]

Соглашусь с Курдль ©   (27.04.04 15:31) [14]
Expr1000 называется, обычно, вычисляемое поле, такое как sum или avg. Странно, что тебе позволили назвать поле no.

Видимо, в синтаксисе SQL для Access это слово что-то означает. В справке, с ходу, я этого не нашел.


 
YurikGl ©   (2004-04-27 23:49) [27]

Можешь сделать select no from table, даже если в table нет такого поля.


 
YurikGl ©   (2004-04-27 23:53) [28]

Проверил, в IB такого нет.


 
Просто Я ©   (2004-04-28 00:00) [29]

YurikGl ©   (27.04.04 23:53) [28]
А я то думаю ну при чем тут вычисляемое поля, все перерыл, а тут она в резервации, не знал этого, короче блин! Ну ладно придумаем что-нить, точнее придумал.
На второй вопрос что-нить знаешь?


 
YurikGl ©   (2004-04-28 00:11) [30]

Честно, - не знаю. Все что могу предложить, - динамическое формирование строки, т.е. последовательно проходимся по списку полей и добавляем их в select. Что-то типа
st:="Select "
for i:=1 to 37 do
st:=st+..fields[i].name+","
и т.п.

В итоговом запросе все равно все перечисляется.

fields[i].name скорее всего не так пишется, но что-то подобное.

Второй вариант, - написать в запросе * а в объекте TQuery, дважды на него кликнув, сначала отобразить все поля, потом просто удалить ненужное поле.

З.Ы. Спать ухожу :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.035 c
1-1084256465
bon
2004-05-11 10:21
2004.05.23
TTreeView


3-1083260513
Михалычъ
2004-04-29 21:41
2004.05.23
Сохранение БД


3-1083062318
UE
2004-04-27 14:38
2004.05.23
DBExpress -> TSQLConnection -> DBX Error: ...


3-1083072776
Slon_SCG
2004-04-27 17:32
2004.05.23
Автоматическое восстановление БД InterBase после сбоя


3-1082967154
Nataly
2004-04-26 12:12
2004.05.23
Помогите с QuickReport (как работать без принтера)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский