我有一个《星球大战》角色的数据库和三个表:

Characters(cname, alias, gender, pname)

Droid(cname, dtype, mainskill)

JediSith(cname, level)


其中DroidJediSithCharacters具有IS-A关系(无覆盖,无重叠),而cnameDroidJediSith是引用Characters的外键。

对于给定的Characters,我将如何创建一个查询,以显示JediSith中的所有信息以及Droidcname的其他信息(如果适用)?

当前,我有三个查询,每个表一个,显示每个表的相关信息。是否可以将其合并为一个查询?

最佳答案

使用LEFT JOIN将其他两个表联接到Characters

SELECT c.cname, c.alias, c.gender, c.pname, d.dtype, d.mainskill, j.level
FROM Characters c
LEFT JOIN Droid d ON d.cname = c.cname
LEFT JOIN JediSith j ON j.cname = c.cname


如果要在MS Access中运行查询,则需要使用括号:

SELECT c.cname, c.alias, c.gender, c.pname, d.dtype, d.mainskill, j.level
FROM (Characters c
      LEFT JOIN Droid d ON d.cname = c.cname)
      LEFT JOIN JediSith j ON j.cname = c.cname

关于mysql - 如何创建查询以显示ISA关系中的其他信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49619871/

10-12 05:28