SQL查询帮助/ IF条件语句

时间:2017-04-02 21:48:00

标签: sql sql-server

所以我正在创建一张预订表。我有两个名为Date and Time的下拉列表,其中的数据是从名为" DateTime"的表中检索的。带有一个名为Date的字段,其中包含日期加载且与时间相同。

此预订系统是预约时间和医生的日期。在这一点上,我失去了如何只为医生出现用户想要选择预约以避免双重预约的时间。如果用户在某个特定日期上午9:15预订,我不希望该时间为该日期的另一位用户和医生出现。

更新用户选择了日期时间和医生后,会将其存储在名为“预订”的表格中。所以我原本打算从DateTime中删除那个时间和日期,但如果选择的话,这将不会出现给另一位医生。

请帮助。 :'(

2 个答案:

答案 0 :(得分:0)

您可以使用查询执行此操作而不删除DateTime表中的数据。

    SELECT dt.[Date], dt.[Time], dt.Doctor
    FROM dbo.[DateTime] dt
    WHERE NOT EXISTS (  SELECT 1
                        FROM dbo.Booking b
                        WHERE 
                            b.[Date] = dt.[Date]
                            AND b.[Time] = dt.[Time]
                            AND b.Doctor = dt.Doctor)

查询会选择预订表中当前不存在的所有日期和时间。

希望这有帮助。

的Marius

答案 1 :(得分:0)

至少你应该分享自己的桌面设计。

我认为会有两张表。

一张主表(预订主表) - 日期 - 时间 --isactive

另一个

医生预约表

- 日期 - 时间 --doctorid --patientid --isActive(0,1) - 0取消的cae

所以在GUI中我选择了Doctor和Date,我将这个doctorid和日期传递给我的proc

它从proc.which获取我的日期,时间等,帮助我填充日历。 我为每个医生和日期填写日历。 所以我已经写了这个医生和日期改变两者。

现在在创建日历时,如果我已经获得了book flag,那么我将显示此时间,但它将被禁用。

我的查询将是这样的

select bm.date,bm.time
,case when db.date=dbm.date then 1 else 0 end isBookedDate
from BookingMaster BM
left join DoctorBookingMapping DBM
on bm.date=dbm.date
where dbm.isactive=1
and db.isactive=1
and dbm.doctorid=@Doctorid
and db.date=@Date