【问题标题】:Intersection of Two Tables in SQLSQL中两个表的交集
【发布时间】:2019-04-09 13:28:15
【问题描述】:

基本上我需要创建一个使用其他两个表的特定信息的新表。

例如,我有一个名为 person 的表,其中包含元素 person_id、first_name、last_name、gender、age 和 fav_quote。我有第二个表,名为部门,其中包含元素 dept_id、dept_name 和 building。我现在需要创建包含 person_id 和 dept_id 元素的交集表。并且两者都必须是主键(我假设这只是在我的源代码中表示 PRIMARY KEY (person_id, dept_id) 命令)。

创建表人(

person_id INT(8) NOT NULL auto_increment,

first_name VARCHAR(25) NOT NULL,

last_name VARCHAR(25) NOT NULL,

性别 VARCHAR(1),

年龄 INT(8),

fav_quote 文本,

主键(person_id)

);

创建表部门(

dept_id INT(8) NOT NULL auto_increment,

部门名称 VARCHAR(25) 非空,

构建 VARCHAR(25) NOT NULL,

主键(dept_id)

);

这是我最初的两个表的代码,我只是不确定如何创建一个交集,并且在回顾我的笔记后,我找不到关于如何编写它的说明。

【问题讨论】:

  • 嗨。在您在查询介绍中看到的众多示例查询中,您想要什么?此外,“交叉点”在这里没有任何意义。使用足够的单词和句子来真正说出你的意思。例如,在表、行、行中的列的值等方面。如果你不强迫自己说出你的意思,你怎么能期望推理和交流重新查询?如果您清楚地表达了您的问题/目标/问题,您可以通过谷歌搜索找到答案。 (在这里,对于这个明显的基本常见问题解答,但也是一般性的)。
  • 这是我必须继续执行的所有指令,使用我已经说过的确切语言“交叉表”。我已经用许多不同的术语搜索了它。这是一个我需要做的学校项目,我不仅回顾了自己的课程和以前的工作,而且还咨询了各种解释性网站。如果您不清楚,我深表歉意,但这正是我所面临的斗争。
  • 你不想要“两个表的交集”,因为你的标题错误地说;你想要“一个交集表”。再说一次,你见过什么例子?这对你没有帮助吗?

标签: mysql sql primary-key ddl create-table


【解决方案1】:

您需要一个包含 2 个字段的表格; person_id 和 dept_id。该表将具有两个表个人和部门主键的外键以及两者的复合主键。

此外,仅当人员与部门之间存在一对多关系时,才需要此表。否则只需亲自添加 dept_id 作为外键。

【讨论】:

    【解决方案2】:

    你得到了正确的主键部分。我会将外键添加到您现有的表中,以防止与不存在的人员或部门进行交互:

    CREATE TABLE person_department
        person_id INT(8) NOT NULL,
        dept_id INT(8) NOT NULL,
        PRIMARY KEY(person_id, dept_id),
        FOREIGN KEY(person_id) REFERENCES person(person_id),
        FOREIGN KEY(dept_id) REFERENCES department(dept_id)
    )
    

    【讨论】:

    • 谢谢,这很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多