我的要求是我需要知道一张桌子上的剩余预约时间,其中的选项可以在另一张桌子上找到。 选项可在此表中找到
此表中提供了选项
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中没有日期时它会返回空白。如果日期至少可用一次,它可以正常工作。 请帮助解决此问题,或为我的要求提供不同的适当解决方案。
答案 0 :(得分: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
有效,并且您的日期仍将返回所有记录。
答案 1 :(得分: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')