【问题标题】:How to Cascade 3 Tables in sql如何在sql中级联3个表
【发布时间】:2018-04-22 06:21:14
【问题描述】:

我有 3 张桌子:

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

part {p#, pname, color, city} 主键 {p#}

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

我用“全部插入”在供应商、零件和工作中插入了一些记录

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

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

样本表数据:

供应商:

部分:

工作:

【问题讨论】:

  • mysql sql...选择一个!
  • MySQL 甲骨文...
  • 向我们展示 3 个现有表格的一些示例表格数据,以及您希望在新表格中包含的内容。也许您应该创建一个视图而不是另一个表。
  • 但是mysql使用sql

标签: mysql sql oracle oracle-sqldeveloper


【解决方案1】:

此 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);

【讨论】:

    猜你喜欢
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    相关资源
    最近更新 更多