在Server (To)中,我有一个非常简单的多到多表结构(见下文)。
我需要:
所有这些都应该返回一个结果表。
这在单一的仅连接查询中(不使用IN/NOT IN、嵌套选择、联合或临时表等)是否可行?
模式
Person
ID
IsVisible
IsDeletedPersonJobs
PersonID
JobID ID
IsDeleted我应该能够单独执行每个查询,然后在代码中加入数据集,但我很好奇是否有更简单的使用联接的方法。
伪代码的响应很好,如果准确的话。
谢谢!
发布于 2013-10-25 21:17:17
试一试
select j.*
from personjobs pj
full join jobs j on pj.jobid = j.id
full join person p on pj.personid = p.id
where pj.personid is null
or p.isdeleted = 1
or p.isvisible = 0
or j.isdeleted = 1发布于 2013-10-25 21:30:59
CASE语句用于标识每个raw的给定条件。如果你不需要知道它们,只需把它移除。
Select J.Id, CASE WHEN PersonVisible Is Null THEN '1 - Not Associated'
WHEN PersonVisible = 1 OR PersonDeleted = 1 THEN '2 - Person NotVisible/Deleted'
WHEN J.Deleted = 1 THEN '3 - Deleted Jobs'
ELSE '4 - All Except above' END as Conditions
From Jobs J Left Join
(Select jobId,IsVisible PersonVisible, IsDeleted PersonDeleted
From Person p join PersonJobs pj on p.Id = pj.personId
) X On J.Id = X.jobId
Order by Conditionshttps://stackoverflow.com/questions/19599372
复制相似问题