我有一个SQL Server数据库,通过SQL Server MS管理,与c#应用程序连接,我正在努力解决某个问题。
该数据库用于营地预订系统,该系统包含以下与查询相关的表格。
预订( BookingID ,StaffID,CustomerID,PitchID,StartDate,EndDate)
PITCH( PitchID ,TypeOfPitch,容量)
许多预订都会出现一个推销。
我希望创建一个查询,它将检查特定日期的音高的可用性,该日期是从dateTimePicker输入的。查询将返回可用的音高并将其显示在datagridview中。这是我到目前为止所做的。
SELECT * FROM dbo.PITCH, dbo.Booking
WHERE @Date
NOT BETWEEN dbo.BOOKING.[Start Date] AND dbo.BOOKING.[End Date]
此SQL代码无法正常工作,它会为表格中的每个预订返回一个间距。 SQL的所有c#都在工作,我只是不擅长SQL查询并需要一些帮助! 提前致谢
答案 0 :(得分:1)
SELECT * FROM dbo.PITCH
WHERE PitchID NOT IN
(
-- sub-query to take reserved pitches
select PitchID from dbo.Booking
where @Date BETWEEN [Start Date] AND [End Date]
)
答案 1 :(得分:0)
以下应该做你想要的。子查询提取在给定日期期间预订的投球。所以你希望不在那个查询中的音高。
Select *
From dbo.PITCH
WHERE PitchID Not In (
select PitchID
from dbo.Booking
where @Date between [Start Date] And [End Date])
答案 2 :(得分:0)
DECLARE @DATE DATETIME
SELECT
,b.BookingID
,b.StaffID
,b.CustomerID
,b.PitchID
,b.StartDate
,b.EndDate
,p.capacity
from Dbo.Pitch p
INNER JOIN Booking b ON b.PitchID = p.PitchID
WHERE @Date BETWEEN b.StartDate AND b.EndDate
ORDER BY @DATE DESC
由于您希望节目从顶部的PICKER中选择日期,因此您也需要ORDER BY CLAUSE。 养成这样写的习惯,因为它可以帮助你轻松解决问题并分析问题。 希望它有所帮助