0

私は少しイライラしていて、あなたが助けてくれるかどうか疑問に思っていました:

次の列 PitchValues_Skey、PitchType_Skey (これは外部キーです)、開始日、終了日、そして最後に値を持つピッチ値テーブルがあります。

例えば:

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

そして、私がやりたいことは、予約テーブルを更新して各予約の金額を更新することだけなので、2010 年のデータしかないときに問題なく動作する以下のコードをまとめましたが、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)

したがって、上記のクエリを実行すると、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
4

1 に答える 1

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)
于 2013-02-21T14:49:00.677 に答える