我已将联系人存储在一个表中,并将其关系存储在一个表中,并将子项详细信息存储在另一个表中。我需要使用其子代填充每个父代的“子代名称”吗?
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;
答案 0 :(得分:3)
您尚未提供外键,因此我们必须推断您的数据模型。但是,似乎父母和孩子都在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