私は少しイライラしていて、あなたが助けてくれるかどうか疑問に思っていました:
次の列 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