我的查詢下面是它返回的最後一個記錄上的數量的兩倍。我有3張桌子 - 活動,預訂和預訂。查詢需要列出活動和附加信息,並通過每個活動從預訂表中抽取預訂位置的總數(使用SUM),然後它需要計算相同的tempbook(tempPlacesReserved),以提供該表格內的保留字段是未來的。SQL SUM函數應該使用多個表的數量翻倍
但是,第一個問題是,如果tempbook中的活動沒有記錄,它根本不會返回任何該活動的記錄,爲了解決這個問題,我在過去創建了虛擬記錄,以便它仍然返回記錄,但如果我能做到這一點,我不必這樣做,我寧願它!
我遇到的主要問題是,在返回結果的最終記錄中,它將預訂總數和保留的位置加倍,這使得整個查詢無用。
我知道我做錯了,我只是無法對它進行排序,我在網上搜索了類似的問題,但無法正確地將它們應用於我的情況。
任何幫助,將不勝感激。
P.S.我知道,通常你不需要完全標記數據庫,表格和字段的所有路徑,但對於我計劃使用它的程序,我必須這樣做。
代碼:
SELECT [LeisureActivities].[dbo].[activities].[activityID],
[LeisureActivities].[dbo].[activities].[activityName],
[LeisureActivities].[dbo].[activities].[activityDate],
[LeisureActivities].[dbo].[activities].[activityPlaces],
[LeisureActivities].[dbo].[activities].[activityPrice],
SUM([LeisureActivities].[dbo].[bookings].[bookingPlaces]) AS 'bookingTotal',
SUM (CASE WHEN[LeisureActivities].[dbo].[tempbookings].[tempReserveDate] > GetDate() THEN [LeisureActivities].[dbo].[tempbookings].[tempPlaces] ELSE 0 end) AS 'tempPlacesReserved'
FROM [LeisureActivities].[dbo].[activities],
[LeisureActivities].[dbo].[bookings],
[LeisureActivities].[dbo].[tempbookings]
WHERE ([LeisureActivities].[dbo].[activities].[activityID]=[LeisureActivities].[dbo].[bookings].[activityID]
AND [LeisureActivities].[dbo].[activities].[activityID]=[LeisureActivities].[dbo].[tempbookings].[tempActivityID])
AND [LeisureActivities].[dbo].[activities].[activityDate] > GetDate()
GROUP BY [LeisureActivities].[dbo].[activities].[activityID],
[LeisureActivities].[dbo].[activities].[activityName],
[LeisureActivities].[dbo].[activities].[activityDate],
[LeisureActivities].[dbo].[activities].[activityPlaces],
[LeisureActivities].[dbo].[activities].[activityPrice];
TY bluefeet你太快,我 – user2195482 2013-03-21 17:46:36