非常复杂的查询一直试图构建它几天,并取得了更多的成功。核心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