我有一个《星球大战》角色的数据库和三个表:
Characters(cname, alias, gender, pname)
Droid(cname, dtype, mainskill)
JediSith(cname, level)
其中
Droid
和JediSith
与Characters
具有IS-A关系(无覆盖,无重叠),而cname
和Droid
的JediSith
是引用Characters
的外键。对于给定的
Characters
,我将如何创建一个查询,以显示JediSith
中的所有信息以及Droid
或cname
的其他信息(如果适用)?当前,我有三个查询,每个表一个,显示每个表的相关信息。是否可以将其合并为一个查询?
最佳答案
使用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/