【发布时间】:2012-07-07 17:18:46
【问题描述】:
我想知道如何创建即使外键为 NULL 也可以工作的视图。例如,我们有一个表 Person,它有一个主键和两个外键:
- IdPerson
- FkName
- FkSurname
两个外键可以为NULL。现在我们还有两个表,表 Name:
- 身份证号
- 姓名
和表姓:
- IdSurname
- 姓氏
现在我们创建视图来显示每个人的姓名:
CREATE VIEW `Database`.`ViewPerson` AS
SELECT `N`.`Name`, `S`.`Surname`
FROM `Person` `P`, `Name` `N`, `Surname` `S`
WHERE (`P`.`FkName` = `N`.`IdName`) AND (`P`.`FkSurname` = `S`.`IdSurname`)
问题是,如果外键 FkSurname 为 NULL,那么即使定义了 FkName,该行也不会显示。我希望即使两个外键都是 NULL,它仍然返回两列都为 NULL 的行。现在我知道我可以通过添加表名称和表姓氏行来解决它,在名称/姓氏下具有 NULL ,然后在 FkName 和 FkSurname 中引用在这两列下具有 NULL 值的行。但是我还是想看看有没有外键为NULL并且返回行的解决方案。
【问题讨论】:
-
你应该看看 left-join w3schools.com/sql/sql_join_left.asp
标签: mysql view foreign-keys