2013-08-29 66 views
0

我有四個表。帶條件的SQL Server查詢

  1. 司機考勤
  2. 駕駛員信息
  3. Vechile詳細
  4. 預訂詳情

我想要寫根據某些條件的查詢。

無論何時駕駛員將綁定,然後它將根據分配給駕駛員的車輛綁定。並且只有該司機纔會進入下拉列表,這些列表並非每週關閉,他們也不在我將發送的特定日期上。

  • tblDriverInformation列是:1)ID 2)每週關閉

  • tblDriverAttendance柱---> 1)Driverid 2)留下自日期3)離開日期

  • Driver Id是常見於上表中。

  • tblVehicle列是---> 1)分配給>驅動器(這是常見於上表)2)ID

  • tblBooking柱---> 1)車輛ID 2)從日期開始時間3)結束日期與時間tblVehicletblBooking(在表ID和車輛ID是公用密鑰)

我準備一個查詢,但它是不會放棄的權利,但因爲我不理解怎麼放tblDriverInformationtblDriverAttendance條件。

我的查詢是:

select 
    A.id, 
    (C.FName + '-' + C.LName) as Car_Driver 
from 
    tblVehicle A 
inner join 
    tblDriverInformation C on A.CarId = C.id 
where 
    A.id not in (SELECT VehicleId 
        FROM tblBooking 
        join tblVehicle on C.id = A.AssignedDriver 
        WHERE A.id = @vechileid 
        and Convert(datetime,@FromDateWithStartTime) --start date 
         BETWEEN FromDateWithStartTime AND ToDateWithEndTime 
        OR Convert(datetime,@ToDateWithEndTime) --endDate 
         BETWEEN FromDateWithStartTime AND ToDateWithEndTime 
        or FromDateWithStartTime 
         BETWEEN Convert(datetime,@FromDateWithStartTime) -- startdate 
           AND Convert(datetime,@ToDateWithEndTime) -- enddate 
        or ToDateWithEndTime 
         BETWEEN Convert(datetime,@FromDateWithStartTime) -- start date 
         AND Convert(datetime,@ToDateWithEndTime) -- enddate 
+0

請澄清你的問題,什麼樣的數據集你的實際需要在查詢 –

回答

0

這可能會幫助你,下面的查詢查找出來的車輛和驅動器關聯與他們下面的條件。

1-驅動程序沒有每週關閉。

2-車輛在選定的日期可用(即尚未預訂)在所選日期

3-驅動器可用(即尚未預訂)

SELECT D.ID, V.id 
    FROM tblDriverInformation D 
    INNER JOIN tblVehicle ON V.DRIVER_ID = D.DRIVER_ID 
    INNER JOIN tblDriverAttendance tda ON tda.DRIVER_ID = D.DRIVER_ID 
    INNER JOIN tblBooking tbl ON V.ID = tbl.VECHILCE_ID 
    WHERE D.WEEKLY_OFF= FALSE -- Driver Not Absent 
    AND (@DRIVER_FROM_DATE NOT BETWEEN (tda.FROMDATE,tda.TODATE) OR @DRIVER_TO_DATE NOT BETWEEN (tda.FROMDATE,tda.TODATE)) -- Driver not absent in these dates 
    AND (@VEHILE_FROM_DATE NOT BETWEEN (tbl.FROMDATE,tbl.TODATE) OR @VEHILE_TO_DATE NOT BETWEEN (tbl.FROMDATE,tbl.TODATE)) -- vehicle not booked in these dates 
    -- @DRIVER_FROM_DATE , @DRIVER_TO_DATE, @VEHILE_FROM_DATE, @VEHILE_TO_DATE(user input selected date) 
+0

請問我你是否需要幫助或無法理解任何事情,很樂意幫助你! –