#sql
#sql
Вопрос:
У меня есть эти 3 таблицы с данными
SQLgt; select * from subject; SUBJECTID LNAME FNAME PROJID ---------- ------------ ---------- ---------- 10011 Indy Eva XYZ01 20022 Jordan Sam XYZ01 30033 Jordan Mary XYZ01 40044 Belmont Renee XYZ02 50055 Pissaro Becky XYZ02 60066 Nadal Becky XYZ03 70077 Bardot Brigitte XYZ03 80088 null Eva XYZ03 90099 Garnet Larry XYZ04 10111 Isner Monica XYZ04 11011 Dupont Marty XYZ05 11 rows selected. SQLgt; select * from project; PROJID MEDICNAME PURPOSE START_DATE END_DATE PI_ID ---------- ---------- ------------ ----------- ----------- ---------- XYZ02 Medic1 diabetes 01-oct-2018 31-jul-2022 10001 XYZ01 Medic1 foot 01-sep-2019 31-jul-2021 10001 XYZ04 Medic3 spleen 10-jan-2019 31-jul-2021 10001 XYZ05 Medic5 spleen 10-jul-2020 1-jan-2021 10002 XYZ03 Medic3 lung 01-nov-2016 31-dec-2022 10002 SQLgt; select * from researcher; PID LNAME FNAME ---------- ------------ ---------- 10001 Elgar Dawn 10002 Jordan Daniel 10003 Jordan Athena 10004 Rivers Karen 10005 Gomez Tracy 10006 Gomez Jenny 10007 Perry Eva 10008 McHale Vicky 8 rows selected.
а затем создал третью таблицу, которая выглядит следующим образом
SQLgt; CREATE TABLE n_subject 2 (SubjID number(7), 3 Lastname varchar2(12), 4 Firstname varchar2(10));
Я хочу заполнить свою новую таблицу Субъектами, которые участвовали в проектах, возглавляемых Доном Элгаром (PID-10001). Есть ли способ сделать это через 3 таблицы? Я близок к коду, который выглядит так
SQLgt; insert into n_subject (subjid, lastname, firstname) 2 select subjectid, lname, fname 3 from subject where projid = 'XYZ01' or projid = 'XYZ02' or projid = 'XYZ04';
но вместо этого я пытаюсь получить данные во всех трех таблицах, используя идентификатор проекта и PID. Возможно ли это?
Комментарии:
1. Подсказка :
UNION ALL
.
Ответ №1:
вы можете использовать инструкцию select с внутренним соединением
INSERT INTO n_subject (subjid, lastname, firstname) SELECT subjectid, lname, fname FROM [subject] JOIN [project] ON [project].projid = [subject].projid WHERE [project].pi_id = '10001';
Комментарии:
1. Это было именно то, что я искал. Просто не мог до конца это понять. Большое вам спасибо!
2. Смогли бы вы использовать оператор «присоединиться» более одного раза, если бы вам пришлось перейти, скажем, за другую таблицу?
3. да, любое действительное
select
утверждение будет действительным сinsert into
утверждением, если столбцы обоих утверждений совпадают @Eddie14