Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Помогите пожалуйста вставить записи таблицу

есть три таблицы Т1 -< Т2 >- Т3

то есть таблицы Т1 и Т3 - "справочники"
в справочник Т1 занесена новая запись, необходимо сделать вставку в Т2
чтобы подкинуть туда УИД записи Т1 для всех строк из таблицы Т3

спасибо!
30 июн 06, 09:27    [2828833]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
"Нескладушки-невладушки - прямо Павлу по макушке" (с) Народ :)
А поточнее с данными пример можно?
30 июн 06, 09:33    [2828852]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Декартово произведение

insert into t2
select uid_t1, uid_t3
from t1, t3
where uid_t1 = 3
30 июн 06, 09:42    [2828888]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
Созаются три таблицы Т1,Т2,Т3
Т1,Т3 - просто справочные, без внешних ключей

Т2 хранит ссылки на Т1 и Т3 :


create table T2(
УИД NUMBER(9) not null,
T1_УИД NUMBER(9) not null,
T3_УИД NUMBER(9) not null,
ЗНАЧЕНИЕ VARCHAR2(...),
)
alter table T2 add constraint Т2_PK primary key (УИД);
alter table T2 add constraint Т2_UK unique (Т1_УИД, Т3_УИД);

alter table T2 add constraint Т2_1_FK foreign key (Т3_УИД)
references T3 (УИД);

alter table Т2 add constraint Т2_2_FK foreign key (Т1_УИД)
references Т1 (УИД);

вставить нужно в Т2 записи ,
- ссылающуиеся на определённый (Единственный) УИД из T1 ;
- для всех полей из T3.
30 июн 06, 09:59    [2828959]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
А dmidek правильно написал?
30 июн 06, 10:14    [2829034]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Takurava
А dmidek правильно написал?


По- моему нормально :-)
Как вариант, пишем триггер

insert into t2
select :new.id_t1, id_t3
from t3
30 июн 06, 10:17    [2829048]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
вставка не проходит:

+
insert into t2.т1_уид, t2.т3_уид
values( 32, (select УИД from Т3)


ORA-00928: missing SELECT keyword

Commit complete

с ударением на имени т2

Необходимо созать в таблице, которую видят по внешнему ключу две другие.
Обращение по внешним ключам таково: Т1 -< Т2 >- Т3.
30 июн 06, 10:32    [2829131]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Твоя вставка должна выглядеть так:
insert into  t2.т1_уид, t2.т3_уид
  select 32, УИД from Т3
30 июн 06, 10:36    [2829155]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
внёс одну(!!!) запись в Т1,
должен сделать вставку в Т2 по_количеству_строк_в_Т3,
значение внешнего ключа на Т1 во вставляемых записях будет равно УИДу единственной (!!!) внесённой в Т1 записи
30 июн 06, 10:37    [2829158]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Павел малый
вставка не проходит:

+
insert into t2.т1_уид, t2.т3_уид
values( 32, (select УИД from Т3)


ORA-00928: missing SELECT keyword



(c) "... ходит, ходит один с козлиным пергаментом и непрерывно
пишет. Но я однажды заглянул в этот пергамент и ужаснулся. Решительно ничего
из того, что там написано, я не говорил. " (Мастер и Маргарита)

Павел Малый, Вы чего же меня позорите ? Люди могут подумать, что я предлагал подобное ...
30 июн 06, 10:38    [2829166]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Takurava
Твоя вставка должна выглядеть так:
insert into  t2.т1_уид, t2.т3_уид
  select 32, УИД from Т3

Вы тут тоже немного погорячились...
30 июн 06, 10:39    [2829181]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Takurava
Твоя вставка должна выглядеть так:
insert into  t2.т1_уид, t2.т3_уид
  select 32, УИД from Т3

Вот понаписал идиёт :)
insert into t2
  select откуда_то_надо_взять_УИД_для_T2, т1_уид, т3_уид, ЗНАЧЕНИЕ
  from T1, Т3
  where T1.УИД=УИД_T1
30 июн 06, 10:42    [2829204]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Да что ты будешь делать
insert into t2
  select откуда_то_надо_взять_УИД_для_T2, T1.УИД, T3.УИД, ЗНАЧЕНИЕ
  from T1, Т3
  where T1.УИД=УИД_той_строки_что_вставили_в_T1
30 июн 06, 10:44    [2829218]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
insert into Т2(уид, т1_уид, т3_уид)
values( Т2_УИД.NEXTVAL, 32, (select УИД from т3))

ORA-01427: single-row subquery returns more than one row

Commit complete
30 июн 06, 10:49    [2829257]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Мля, values-то откуда у тебя постоянно появляется? Где ты в постах dmideka или моих видел слово VALUES ?
30 июн 06, 10:55    [2829323]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
To Takurava and dmidek :

СПАСИБО!!! ))
30 июн 06, 12:20    [2829997]     Ответить | Цитировать Сообщить модератору
 Re: Как всавить записи в таблицу?  [new]
Павел малый
Member

Откуда: Екатеринбург
Сообщений: 317
to dmidek : извините !))
30 июн 06, 12:45    [2830174]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить