The*_*TXI 0 sql database sql-server-2005
我有两个表,tblEntities和tblScheduling.
tblEntities:
EntityID ShortName Active
1 Dirtville 1
2 Goldtown 1
3 Blackston 0
4 Cornfelt 1
5 Vick 1
Run Code Online (Sandbox Code Playgroud)
tblScheduling:
ScheduleID EntityID SchedulingYearID
1 1 20
2 1 21
3 2 20
4 3 19
5 5 20
Run Code Online (Sandbox Code Playgroud)
我需要一个查询,它将显示特定ScheduleYearID的所有活动实体及其日程安排信息.
输出应该看起来像(在这种情况下所需的SchedulingYearID是20):
EntityID ScheduleID
1 1
2 3
4 NULL
5 5
Run Code Online (Sandbox Code Playgroud)
我到目前为止写的查询是:
SELECT tblEntities.EntityID, tblEntities.ShortName, tblScheduling.ScheduleID
FROM tblScheduling RIGHT OUTER JOIN
tblEntities ON tblScheduling.EntityID = tblEntities.EntityID
WHERE (tblScheduling.SchedulingYearID = @SchedulingYearID)
AND (tblEntities.Active = 1)
ORDER BY tblEntities.EntityID
Run Code Online (Sandbox Code Playgroud)
我的问题是使用此查询它将不包括没有调度信息的活动实体(例如上面示例中的EntityID 4).我可以编写查询以显示所有活动实体及其计划状态,但是一旦我开始通过SchedulingYearID限制它,我将丢失这些特定实体.
是否有任何解决方案,我显然缺少,而不必诉诸子查询,游标等?如果不是,这不是什么大问题,我只是觉得我在这里错过了一些简单的东西.
试试这个...连接条件被评估以产生中间连接结果集,然后,(对于外部连接),在"继续"之前,所有来自"外部"的行都被添加回去...在评估条件的情况下完成所有连接后......
SELECT E.EntityID, E.ShortName, S.ScheduleID
FROM tblEntities E
Left Join tblScheduling S
ON S.EntityID = E.EntityID
And S.SchedulingYearID = @SchedulingYearID
WHERE E.Active = 1
ORDER BY E.EntityID
Run Code Online (Sandbox Code Playgroud)
我改变了你的连接顺序,因为我更喜欢左连接......但这没关系
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |