所以,我有,我想用一个不相交的连接创建三个表。 这些都是人,承租人和员工。 所以每个人都必须是一个租客或雇员,不可能兼顾。 我创建为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