mysql - 如何在sql中级联3个表

标签 mysql sql oracle oracle-sqldeveloper

我有 3 个表:

供应商{s#, Sname, status, city} 主键 {S#}

部分{p#,pname,颜色,城市} 主键 {p#}

工作 {j#, jname,city} 主键 {j#}

我使用“全部插入”将一些记录插入到供应商、零件和作业中

现在我想创建表 spj {s#, p#, j#, quantity} 其中前三列是外键。

如何将记录插入到 spj 表中?

示例表数据:

供应商: enter image description here

部分: enter image description here

工作: enter image description here

最佳答案

此 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/

相关文章:

mysql:使用 group by 时非分组项崩溃

oracle - 从Grails-Groovy中提取Oracle vs MySQL中的时间戳字段

php - 计算大于 20 的值的数量

php - PDO 插入不会抛出错误或插入表单数据

sql - T-Sql算法问题

sql - 将一列拆分或子化为多列

SQL 加入两次相同的表?

php - 使用ajax将数据插入到php中的表中

MySql 帮助编写查询

sql - 一个表中的 SELECT 值与另一个表不匹配但也引用了另一列?