非常複雜的查詢一直試圖構建它幾天,並取得了更多的成功。核心SQL設計者的複雜選擇查詢問題
我使用的是SQL-SERVER 2005標準
我需要的是:從廣告活動 5 CampaignVariants而2有設置最大PPU號和3是隨機的。
接下來條件是CampaignDailyBudget和CampaignTotalBudget低於什麼是在運動設定(計算是通過CampaignVariants連接到廣告活動在訪問者表的點擊次數對哪些用戶點擊)
下一頁條件 CampaignLanguage,CampaignCategory CampaignRegion和CampaignCountry必須是我通過(languageID,categoryID,regionID和countryID)發送給此選擇的人。
接下來的條件是我發送到這個select語句的IP地址不會在當前Campaign的IP列表中(我刪除了24小時IP的非活動狀態)。
換句話說,它得到5個CampaignVariants爲進入該網站,當我從用戶PublisherRegionUID,IP,語言,國家及地區採取
詳情
用戶i從Visitor獲取countryID,regionID,ipID,PublisherRegionUID和languageID。這是過濾器參數。雖然我首先需要得到Publisher要在其網站上顯示的內容,然後使用除瀏覽器區域ID以外的所有參數,通過訪問者的參數篩選剩餘的所有廣告系列。
所以它有兩個實際的價格。一個發佈商想要發佈的內容以及另一個訪問者可以查看的內容...
campaignDailyBudget和campaignTotalBudget是創建Campaign的用戶設置的值。這兩個比較(每個廣告系列的點擊次數)*(campaignPPU),而日期過濾器明顯用於過濾從今天中午12:00到晚上11:59的campaignDailyBudget。 campaignTotalBudget不受日期的原因很明顯的
演示存儲過濾過程
ALTER PROCEDURE dbo.CampaignsGetCampaignVariants4Visitor
@publisherSiteRegionUID uniqueidentifier,
@visitorIP varchar(15),
@browserID tinyint,
@countryID tinyint,
@osID tinyint,
@languageID tinyint,
@acceptsCookies bit
AS
BEGIN
SET NOCOUNT ON;
-- check if such @publisherRegionUID exists
if exists(select publisherSiteRegionID from PublisherSiteRegions where [email protected])
begin
declare @publisherSiteRegionID int
select @publisherSiteRegionID = publisherSiteRegionID from PublisherSiteRegions where [email protected]
-- get CampaignVariants
-- ** choose 2 highest PPU and 3 random CampaignVariants from Campaigns list
-- where regionID,countryID,categoryID,languageID meets Publisher and Visitor requirements
-- and Campaign.campaignDailyBudget<(sum of Clicks in Visitors per this Campaign)*Campaign.PPU during this day
-- and Campaign.campaignTotalBudget<(sum of Clicks in Visitors per this Campaign)*Campaign.PPU
-- and @visitorID does not appear in Campaigns2IPs with this Campaign
-- insert visitor
insert into Visitors (ipAddress,browserID,countryID,languageID,OSID,acceptsCookies)
values (@visitorIP,@browserID,@countryID,@languageID,@OSID,@acceptsCookies)
declare @visitorID int
select @visitorID = IDENT_CURRENT('Visitors')
-- add IP to pool Campaigns ** adding ip to all Campaigns whose CampaignVariants were chosen
-- add PublisherRegion2Visitor relationship
insert into PublisherSiteRegions2Visitors values (@visitorID,@publisherSiteRegionID)
-- add CampaignVariant2Visitor relationship
end
END
GO
哪個版本的sql server – 2010-06-14 15:23:10
你的問題不夠清楚。請至少提供您的表格說明。 – redben 2010-06-14 15:26:58
表格定義,樣本數據和預期輸出將非常有用。當他們試圖描述它時,通常很難理解一個人正在尋找什麼,特別是如果他們使用的術語與其他人不熟悉的話。 – 2010-06-14 15:27:17