我有 3 个表:
供应商{s#, Sname, status, city} 主键 {S#}
部分{p#,pname,颜色,城市} 主键 {p#}
工作 {j#, jname,city} 主键 {j#}
我使用“全部插入”将一些记录插入到供应商、零件和作业中
现在我想创建表 spj {s#, p#, j#, quantity} 其中前三列是外键。
如何将记录插入到 spj 表中?
示例表数据:
最佳答案
此 Oracle 命令创建表 spj
作为三个表的笛卡尔积并添加随机数量。如果您不想要随机值 - 更改为 null。
create table spj as
select s.sid, p.pid, j.jid, round(dbms_random.value(1, 100)) quantity
from supplier s cross join part p cross join job j;
如果您创建的表已经使用insert
,而不是create
。除了 cross join
,您还可以使用任何连接条件,比如 city
。现在我们有 9 x 9 x 9 行。
我在这里添加外键:
alter table spj add constraint spj_sup_fk foreign key (sid) references supplier (sid);
alter table spj add constraint spj_part_fk foreign key (pid) references part (pid);
alter table spj add constraint spj_job_fk foreign key (jid) references job (jid);
关于mysql - 如何在sql中级联3个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198758/