Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c