0

我的要求是我需要从一个表中知道剩余的预约时间,另一个表中提供了这些选项。此表中提供了选项

此表中提供了选项

Timeid  Timing
==========================
1   | 00:00.0
----------------------------
2   | 00:00.0
-------------------------
3   | 00:00.0
--------------------------
4   | 30:00.0
------------------------------
5   | 30:00.0
-------------------------
6   | 30:00.0
-----------------------
7   | 30:00.0
------------------------
8   | 30:00.0
-------------------------

并且预订保存在下表中

预订保存在下表中

TreaterID   DateBooked  TimeID
----------------------------------------
1   |2012-01-01 |8
----------------------------------
1   |2012-01-01 |3
-------------------------------------

我希望结果是时间表中的时间,而不是特定日期的预订表中的时间。我是编程新手,只能解决这个问题

SELECT Timing FROM ClinicNew.tbl_timing
    WHERE Timeid <>(SELECT Timeid FROM ClinicNew.TreaterEngagedDTM WHERE DateBooked = '02-01-2012')

这个查询没有给我一个正确的解决方案——这意味着当日期在表 2 中不可用时它返回空白。如果日期至少有一次可用,它工作正常。请帮助解决此查询,或根据我的要求提供不同的适当解决方案。

4

2 回答 2

1

您可以使用NOT EXISTS

SELECT timing 
FROM   clinicnew.tbl_timing T 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   clinicnew.treaterengageddtm B 
                   WHERE  B.datebooked = '02-01-2012' 
                          AND T.timeid = B.timeid) 

演示

所以结果是:

TIMING
00:00.0
00:00.0
30:00.0
30:00.0
30:00.0
30:00.0

排除了两条记录(请注意,我已将演示中的日期更改为表中的日期,以证明NOT EXISTS作品的日期,无论如何都会返回所有记录)。

于 2013-08-21T14:11:22.060 回答
0
SELECT Timing
FROM ClinicNew.tbl_timing t1
WHERE NOT EXISTS(SELECT 1 FROM ClinicNew.TreaterEngagedDTM t2
                 WHERE t2.TimeId = t1.TimeId
                 AND t2.DateBooked = '2012-01-02')
于 2013-08-21T14:12:07.543 回答