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

Вниз

insert into   Найти похожие ветки 

 
сергей1   (2004-08-12 11:30) [0]

есть такой вопрос :

этот запрос переписывает все данные из таблицы Table1 в Table2 :

insert into Table2 select * from Table1

каким образом подменить часть столбцов другой информацией, т.е. например
в последний столбец подставить другие данные
запрос типа этого неработает

insert into Table2 values
(
(select field1 from Table1),
"another_data"
)


 
Соловьев ©   (2004-08-12 11:33) [1]

может так?
insert into Table2(field1, field2) values
(
(select field1 from Table1),
"another_data"
)


 
Nikolay M. ©   (2004-08-12 11:33) [2]


> insert into Table2 values
> (
> (select field1 from Table1),
> "another_data"
> )

insert into Table2
select field1, "another_data" from Table1
?


 
Ega23 ©   (2004-08-12 11:37) [3]

Я к варианту [2] склоняюсь.
Дурацкий вопрос: а нафига?


 
Nikolay M. ©   (2004-08-12 11:50) [4]


> Ega23 ©   (12.08.04 11:37) [3]

Имхо, скоро выяснятся "нюансы", которые потребуют разжевывания, что такое CASE...WHEN :)


 
сергей1   (2004-08-12 12:07) [5]

нет, не катит, выдает ту-же ошибку :

Subqueries are not allowed in this context.

а нужно это для следующего :

есть 2 таблицы, одна со списком деталей [Деталь], другая с технологией к каждой детали [Технология],
деталь может иметь несколько вариантов с немного разными названиями, например det, det-1, det-2, det-3.
Вот те варианты, которые с черточками, должны иметь ту-же технологию, что и det. Я выбираю запросом такие
детали из первой таблицы, а теперь хочу их вставить во вторую таблицу, но с данными относящимися к det.

>Nikolay M.
при чем тут case ?

вроде как курсорами можно решить, но неужели SQL сам не позволяет такое делать ?


 
Nikolay M. ©   (2004-08-12 12:16) [6]


> сергей1   (12.08.04 12:07) [5]
> нет, не катит, выдает ту-же ошибку :
>
> Subqueries are not allowed in this context.

Кого куда не катит? [2] - работающий вариант.


 
46_55_41_44 ©   (2004-08-12 12:31) [7]

тогда лучше сделать через дельфяк...
С помощью Insert Into Table2 (Field1, Field2, ..., FieldN)
Values
(Value1, Value2, ..., ValueN)
Где Value1..N могут быть данные полей Field1..FieldN таблицы Table1 либо любые другие данные!

Отрицательная сторона этого способа в том, что придется N раз ExecSql давать!!! То есть выполнять запрос!


 
Ega23 ©   (2004-08-12 12:45) [8]

сергей1   (12.08.04 12:07) [5]

Гы-гы-гы! Я так и знал, что это нафиг не нужно! А Foreign Key тебе о чём-нибудь говорит?


 
сергей1   (2004-08-12 13:11) [9]

>Nikolay M. ©
sorry, я твой вариант не заметил, моя реплика была к Соловьеву, а твой вариант как раз рабочий спасибо.

>46_55_41_44 ©
через дельфи неохота, это медленней, я хочу это через ХП сделать

>Ega23 ©
причем тут вообще FK, речь идет не о контроле ввода, а о том, что требуется добавить в таблицу сразу несколько новых записей, причем первый столбец берется из одной таблицы, а в остальные нужно вписать заданную информацию


 
Ega23 ©   (2004-08-12 13:16) [10]

причем первый столбец берется из одной таблицы

Именно это и называется нормализацией БД, когда вместо дублирования стринговых полей используется вторичный ключ. Зачем дублировать информацию, если у тебя уже в одной таблице есть это поле?


 
сергей1   (2004-08-12 14:39) [11]

может я неверно описал ситуацию, но нормализация здесь тоже непричем, есть таблица :

f1 | f2
--------
a1 | 5
b1 | 6
c1 | 3
d1 | 8

сюда надо добавить несколько новых строк, где f1 берется из другой таблицы по определенным критериям,
а поле f2 дублируется от строки а1

f1 | f2
--------
a1 | 5
b1 | 6
c1 | 3
d1 | 8
x1 | 5
y1 | 5
z1 | 5


 
Ega23 ©   (2004-08-12 14:55) [12]

insert into Table2(f1, f2)
values ((Select f1 from Table2), (select f2 from Table1 where f1=a1)


 
сергей1   (2004-08-12 15:36) [13]

твой вариант как у Соловьева и у меня в топике, он к сожалению не работает, Nikolay дал правильный вариант



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

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
1-1092810790
andy
2004-08-18 10:33
2004.09.05
Asm-процедуры для работы со строками PChar


1-1093019041
Ragazor
2004-08-20 20:24
2004.09.05
Чтение файла, Pos(x,y,z)


14-1092555687
Мазут
2004-08-15 11:41
2004.09.05
Я всё еще жив парни! Всем привет из подмосковья!


1-1092737954
STARfish
2004-08-17 14:19
2004.09.05
Обработка нажатия кнопок управления курсором...


14-1092776663
Cheater
2004-08-18 01:04
2004.09.05
Загадили природу....