2016-03-05 4 views
0

У меня есть задание. Нам была предоставлена ​​таблица MAIN_TABLE, которая имеет столбец patient_id как внешний ключ.SQL-вставка строк из нескольких таблиц

Мне нужно создать отдельную таблицу с именем «пациент», у которой есть терпеливый_id как первичный ключ вместе с некоторыми другими атрибутами, такими как имя и адрес.

Я успешно создал схему этой таблицы. Теперь есть серьезная проблема, с которой я столкнулся. После создания этой таблицы я использовал инструкцию insert для вставки значений для имени и адреса из фиктивной таблицы.

До этого момента все работает нормально. Однако столбец patient_id все еще пуст, но я по умолчанию установил его в 0.

Теперь проблема в том, что мне нужно получить значения в этой колонке, patient_id, из столбца patient_id раздела MAIN TABLE.

Не могу понять, как это сделать? Я пытаюсь использовать:

UPDATE patient 
SET patient_id=(select id from MAIN_TABLE) 

НО это дает мне ошибку, что несколько возвращаемых строк, которые действительно имеет смысл, но в каком состоянии я помещаю в ИНЕКЕ тогда?

+2

Вы просто задать вопрос ясно и дать все столбцы в таблице манекена, и в каком порядке вы должны вставить значения patient_id в фиктивной таблице. –

+0

Какая СУБД вы используете? –

+0

@a_horse_with_no_name Я использую Sql, и мне нужно скопировать некоторые столбцы из фиктивной таблицы и одну из MAIN_TABLE –

ответ

0

Звучит странно. Как может быть таблица MAIN_TABLE с внешним ключом patient_id, но основная таблица patient не существует. Где это делают patient_id s в MAIN_TABLE?

Предлагаю не вставлять свои данные из таблицы-заглушки, а затем попытаться обновить его. Но вставьте его как с обоими - MAIN_TABLE, так и с фиктивным столом. Если вы не можете присоединиться к ним. Во время обновления вы также не сможете.

Так как я думаю, что у них нет связанных первичных/внешних ключей, единственный способ присоединиться к ним - использовать хороший бизнес-ключ. У вас есть хороший бизнес-ключ? Вы говорите о людях. Так что имя, фамилия, день рождения, адрес часто достаточно хороши. Но вы должны думать об этом.

С вашими данными я могу только дать вам какой-то оператор мета-вставки. Но вы поймете.

Пример:

insert into patient (col1, col2, col3) 
select 
    a.colA, 
    a.colF, 
    b.colX 
from 
    dummy_table a 
    inner join MAIN_TABLE b on a.colN=b.colA and a.colM=b.colB 

И: Если patient_id ваш первичный ключ в patient вы должны убедиться, что это даже не возможно иметь одинаковые значения или null в этой колонке. И вы должны использовать ограничения для обеспечения целостности данных.

http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm

Смежные вопросы