Необходимо заполнить значение в строке, используя INNER JOIN - PullRequest
0 голосов
/ 21 января 2019

Я сохранил контакты в одной таблице и их отношения в одной таблице, а дочерние данные - в другой. Мне нужно заполнить "имя ребенка" каждого родителя, используя их childid?

 CREATE TABLE contact_table(
 contactid NUMBER(3)
,contactname VARCHAR2(30)
,contactage NUMBER(2)
);


CREATE TABLE contact_maritalstatus(
statusid NUMBER(3)
,contactid NUMBER(3)
,contactgender VARCHAR2(8)
,contactstatus VARCHAR2(10)
);
CREATE TABLE contact_relation(
relationid NUMBER(3)
,contactid NUMBER(3)
,partnerid NUMBER(3)
,childid NUMBER(3)
);
CREATE TABLE contact_child(
childid NUMBER(3)
,contactid NUMBER(3)
);

SELECT cb.contactname,cm.contactgender,cm.contactstatus,cr.childid
FROM contact_table cb 
 inner join contact_maritalstatus cm  on cb.contactid = cm.contactid
 inner join contact_relation cr on cb.contactid = cr.contactid;

enter image description here

1 Ответ

0 голосов
/ 21 января 2019

Вы не предоставили внешние ключи, поэтому мы должны определить вашу модель данных. Однако кажется, что родители и дети находятся в contact_table, и contact_relation объединяет супругов друг с другом, а родителей - с детьми. Если это так, вам просто нужно присоединиться к contact_table во второй раз, используя псевдонимы таблиц и столбцов, чтобы различать два экземпляра:

SELECT cp.contactname as parent_name 
       , cm.contactgender
       , cm.contactstatus
       , cr.childid
       , cc.contactname as child_name 
FROM contact_table cp
 inner join contact_maritalstatus cm  on cp.contactid = cm.contactid
 inner join contact_relation cr on cb.contactid = cr.contactid
 inner join contact_table cc on cc.contactid = cr.childid 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...