当前位置: 首页 > 面试题库 >

引用同一表的外键

董胡非
2023-03-14
问题内容

进行了一次面试,下面是表格和结构

 Table Person = id, name, dob, dod, mother_id, father_id
 Primary Key (id)
 Foreign Key mother_id references Person
 Foreign Key father_id references Person

有人问

  1. “选择所有母亲”
  2. “选择那些是“约翰·史密斯”和“简”的孩子

我很困惑,因为我假设外键会像往常一样与其他表链接。但是那时我失败了。有人知道实际答案和原因吗?


问题答案:

这种数据结构称为“自引用表”

SELECT DISTINCT mothers.*
FROM person
    inner join person mothers on person.mother_id = mothers.id

SELECT person.*
FROM person
    inner join person fathers on person.father_id = fathers.id
    inner join person mothers on person.mother_id = mothers.id
WHERE 
    fathers.name='john smith'
and 
    mothers.name='jane'


 类似资料:
  • 我有两个表两个表名

  • 在一个表中有两列可以是来自同一表的外键,这样可以吗? 例如: 我有一个“address”表,表中有列: id,street,city_id,state,country(或id,street,city_id,state_id,state_id) 我有一个'states'表,保存状态和国家:id、name、level 那么我可以把states_id放在地址表的state和country中吗(如上面的括

  • 问题内容: 我试图在其中一个表上创建外键,并在其他模式中引用表的列。 像这样的东西: 由于我获得了必要的赠款,因此效果很好。 现在,我想知道是否有原因不引用其他模式中的表,或者有什么需要注意的地方? 问题答案: 没问题。在表之间建立外键关系时,架构实际上没有任何影响。只要确保适当的人员具有您打算使用的架构所必需的权限即可。

  • 问题内容: 我正在开发一个将用作其他应用程序的可扩展框架的应用程序。 基本类之一称为节点,节点具有内容。SQL表如下所示: TABLE节点(NodeId int,....等) 表格NodeContentRelationship(NodeId int,ContentType字符串,ContentId int) 开发人员可以扩展应用程序以创建自己的内容类型。 显然,从关系数据库的角度来看,这很不好,因

  • 我对Laravel和数据库都是新手。我正在写一个学生评估的网络应用程序。我有一个现有的MySQL数据库,它已经包含了我所需要的一切;但是,我正在使用Laravel的auth user表,并尝试添加一个外键,该外键引用MySQL数据库中的教师表。我一直得到以下错误。。。 在Connection.php第664行: SQLSTATE[HY000]:一般错误:1215不能添加外键约束(SQL:改变表添加

  • 如何在JPA中使用相同的表执行左外部联接?当我试着这样做的时候: 我得到错误:“意外标记:在第1行附近,第122列[从com.homersoft.wh.db.entity.radius.radacct e1中选择e1在e1.username=e2.username和e1.radacctID ?1]”