2013-02-21 74 views
0

我得到一點點沮喪,並想知道如果你能幫助:拉正確的結果從我PitchValues表

我有一個傾角數值表有以下的列PitchValues_Skey,PitchType_Skey(這是一個外鍵),開始日期,結束日期終於值:

例如:

1 7 01/01/2010 31/12/2010 £15 
2 7 01/01/2011 31/12/2011 £20 

所有我想要做的就是更新我的登記表,每個預訂的多少將是,所以下面我放在一起的代碼當我只有2010年的數據時工作得很好,但我k現在有2011年和2012年,並希望更新它,但它只會隨着2010年的價格更新。

SELECT  Bookings.Booking_Skey, DATEDIFF(day, Bookings.ArrivalDate, Bookings.DepartureDate) * PitchValues.Value AS BookingValue, 
         PitchValues.PitchType_Skey 
FROM   Bookings INNER JOIN 
         PitchValues ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey 
WHERE  (Bookings.Booking_Skey = 1) 

所以,當我運行上面的查詢我希望看到一個數據線,而是我看到4(見下文)

我希望這樣的:

Booking_Skey BookingValue PitchType_Skey 
     1    420      4 

但我得到這個

Booking_Skey BookingValue PitchType_Skey 
    1     420     4 
    1     453.6    4 
    1     476.7    4 
    1     476.7    4 
+0

如果你只是檢查Bookings.Booking_Skey = 1,那麼所有給定的元組是一個匹配。所以輸出是正確的! – Aditi 2013-02-21 13:33:39

+0

但是bookings_Skey應該只有1行數據,因爲此預訂的抵達日期是2010年,而不是2011年,2012年等 – wafw1971 2013-02-21 13:52:25

+0

,但您在哪裏檢查日期?還是你說表格本身應該只有這個價值? – Aditi 2013-02-21 13:54:19

回答

0

現在所有排序,感謝您的幫助。

SELECT Bookings.Booking_Skey, DATEDIFF(DAY, Bookings.ArrivalDate, Bookings.DepartureDate) * PitchValues.Value AS BookingValue, PitchValues.PitchType_Skey 
FROM Bookings 
INNER JOIN PitchValues ON Bookings.PitchType_Skey = PitchValues.PitchType_Skey 
    AND Bookings.ArrivalDate BETWEEN PitchValues.StartDate AND PitchValues.EndDate 
WHERE (Bookings.Booking_Skey = 1)