如何写SQL表不相交连接(How to write Tables in SQL with a Dis

2019-09-26 03:35发布

所以,我有,我想用一个不相交的连接创建三个表。 这些都是人,承租人和员工。 所以每个人都必须是一个租客或雇员,不可能兼顾。 我创建为PERSONID主键,租户和员工作为两个独立的表,其主键是反向链接到的人员(是PersonID)外国密钥的人表。 我如何在这里创建一个不相交,其中每个人只能为一个租客或雇员? 谢谢

Answer 1:

你可以试试这个,这将挑选出每个人谁是无论是一个人或雇员:

SELECT *
FROM (SELECT person.*,
             CASE WHEN employee.id IS NULL THEN 0 ELSE 1 END AS is_employee,
             CASE WHEN tenant.id   IS NULL THEN 0 ELSE 1 END AS is_tenant
      FROM person LEFT JOIN employee on person.id = employee.id
                  LEFT JOIN tenant on person.id = tenant.id) AS tA
WHERE tA.is_employee <> tA.is_person 

确保ID列的所有索引。



文章来源: How to write Tables in SQL with a Disjoint Connection