Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.035 c
11-1080427828
Deimos
2004-03-28 01:50
2004.09.05
KOL + TASM = ???


3-1091776296
Рафик
2004-08-06 11:11
2004.09.05
Проблема с полями


6-1088615393
leonidus
2004-06-30 21:09
2004.09.05
Чем заменить idHTTP


1-1092744398
sdw_syscoder
2004-08-17 16:06
2004.09.05
Подождать нажатие кнопки


6-1088676977
intruder
2004-07-01 14:16
2004.09.05
Отправка сообщения через прокси





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