機能や商品のページングのSQL SQLカスタムストアドプロシージャを作成します。

- NARROWブランドIDがあるかどうかを判断します

--select dbo.isValite(94,94)
関数isValiteを作成する(@brandId int型、@入札INT)
戻り値int
として
開始
@rNumber int型を宣言
@brandId = @bIdがあれば
@rNumber = 1セット
、他の
設定@rNumber = 0を
@場合入札= 0
セット@rNumber = 1つの
リターン@rNumber
終わり
行きます

 


-商品価格が入力をフィルタがあるかどうかを判断する
dbo.comparePrice(269.00,100,300)--select
作成機能comparePrice(@price進(8,2)、priceA進(8,2)、@、@priceB進(8,2) )
戻り値int
AS
始まる
DECLAREを@j int型
IF @price> = @priceAと@price <= @priceB
SETの@j。1 =

@j SET = 0
IF @priceA @priceB = 0と= 0
SET = @j。1つの
リターン@j
エンド
ゴー

-函数相当于分割
機能f_splitを作成する(StrSeprateのVARCHAR(10)@ @SourceSqlのVARCHAR(1000))
@tempテーブル(VARCHAR(100))を返す
よう
始める
@iはint型宣言
@SourceSql = RTRIM(LTRIM(@設定SourceSql))が
設定さ@i = CHARINDEX(@ StrSeprate、@ SourceSql) - 。CHARINDEX返回字符串中指定表达式的起始位置
@i> = 1ながら
開始
インサート@temp値(左(@ SourceSql、@ I- 1))
SourceSql =ストリング(SourceSql @、I + 1 @、LEN(@SourceSql)@セット- @ I)
セット@ I = CHARINDEX(@ StrSeprate、@ SourceSql)
終了
@SourceSql <>は'\'場合
@temp挿入値(@SourceSql)
リターン・
エンド・
ゴー
- dbo.f_splitから選択*( '198199204210'、 '')

-函数判断SKUは是否包含该输入的筛选属性值串
(番号VARCHAR @(500)、@stringCodeのVARCHAR(500))の関数isExistsを作成
戻るint型
として
始まる
宣言@returnValue INT
@numbers = '0'の場合
@returnValueを設定します= 1
それ以外であれば(dbo.f_splitから選択数(A)(@stringCode、 ''))<(dbo.f_splitから選択数(A)(@numbers、 ''))
を設定@returnValue = 0
そうなら(=((dbo.f_split(@stringCode、から選択からのカウント(JA)を選択''))J内側が(dbo.f_split(@numbers、 '')から選択)JA = SAのS結合します) SELECT COUNT(a)のdbo.f_splitから(@numbersは、 ''))
@returnValue = 1セット
、他の
設定@returnValue = 0
の戻り@returnValue
エンドが
行きます

 

 

----商品ページの更新は、スクリーニング
のproc GetExtractCommodityRefresh作成

、@SortId int型を-商品カテゴリIDは
ブランドのID - int型、@BrandId
料金をチェック- @PriceAの進(8,2)、
(8,2 @PriceB小数を)、 -料金をチェックB
@PageNumber int型-ページ数
@CommoditiesPerPage int型、
NARROWプロパティ値のId - @StrSelectionValueId VARCHAR(500)、
@orderAse int型、 -ソート販売価格評価を追加しました時間が@orderAse = 3であります(DESC)降順
@HowManyCommodities INT出力を

AS
DECLARE @Commodity表

RowNumber関数INT、
CommodityId INT、
CommodityName VARCHAR(300)は、
市場価格の小数(8,2)、
CommodityAddTime日時、
BrandId INT、
SortID INT、
CSelectionAttribute VARCHAR(300)、
SkuImgのVARCHAR(300)、
SkuPrice進(8,2)、
SkuQuanlityのINT

@orderAse = 1の場合
@Commodity挿入
)cc.commodityId順(上ROW_NUMBER()を選択し、cc.CommodityId、CommodityName、市場価格、CommodityAddTime、BrandId 、からSortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlity(別個c.CommodityId、c.CommodityName、c.MarketPrice、c.CommodityAddTime、c.BrandId、c.SortId、c.CSelectionAttribute、s.SkuImg、s.SkuPriceを選択し、商品Cからs.SkuQuanlityは、CCとして)c.CommodityId = s.CommodityIdにSKU Sに参加左
SortId = @SortId及び= 1)と1 =(セレクトdbo.isExists((dbo.isValite BrandId @(BrandIdを選択します) CSelectionAttribute、@ StrSelectionValueId))と1 =(選択dbo.comparePrice(SkuPrice、@ PriceA、@ PriceB))

他の場合@orderAse = 2
@Commodity挿入は
、(別個c.CommodityId、c.CommodityNameを選択してから上ROW_NUMBER()(cc.SkuPrice順)、cc.CommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlityを選択しますc.MarketPrice、c.CommodityAddTime、c.BrandId、c.SortId、c.CSelectionAttribute、s.SkuImg、s.SkuPrice、s.SkuQuanlity商品Cからは、CCとして)c.CommodityId = s.CommodityIdにSKU Sに参加左
場合SortId = @SortIdと1 =(dbo.isValiteを選択(BrandId、@ BrandId))と1 =(dbo.isExistsを選択(CSelectionAttribute、@ StrSelectionValueId))と1 =(選択dbo.comparePrice(SkuPrice、@ PriceA、@ PriceB ))
他@orderAse = 3場合
@Commodityに挿入
別個c.CommodityId、c.CommodityName、c.MarketPriceを選択(上からROW_NUMBER()(cc.SkuPriceのDESC順)、cc.CommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlityを選択、c.CommodityAddTime、c.BrandId、c.SortId、c.CSelectionAttribute、s.SkuImg、s.SkuPrice、s.SkuQuanlity商品Cからは、CCとして)c.CommodityId = s.CommodityIdにSKU Sに参加左
SortId = @ SortIdと1 =(dbo.isValiteを選択します(BrandId、@ BrandId))と1 =(dbo.isExistsを選択します(CSelectionAttribute、@ StrSelectionValueId))と1 =(dbo.comparePrice(SkuPriceを選択し、@ PriceA、@ PriceB))

他@orderAse = 4であれば
@Commodityへの挿入
別個c.CommodityId、c.CommodityName、c.MarketPriceを選択(上からROW_NUMBER()(cc.commodityIdのDESC順)、cc.CommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlityを選択、c.CommodityAddTime、c.BrandId、c.SortId、c.CSelectionAttribute、s.SkuImg、s.SkuPrice、s.SkuQuanlity商品Cからは、CCとして)c.CommodityId = s.CommodityIdにSKU Sに参加左
SortId = @ SortIdと1 =(dbo.isValiteを選択します(BrandId、@ BrandId))と1 =(dbo.isExistsを選択します(CSelectionAttribute、@ StrSelectionValueId))と1 =(dbo.comparePrice(SkuPriceを選択し、@ PriceA、@ PriceB))

他@orderAse = 5の場合
@Commodityへの挿入
別個c.CommodityId、c.CommodityName、c.MarketPriceを選択(上からROW_NUMBER()(cc.CommodityAddTimeのDESC順)、cc.CommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlityを選択、c.CommodityAddTime、c.BrandId、c.SortId、c.CSelectionAttribute、s.SkuImg、s.SkuPrice、s.SkuQuanlity商品Cからは、CCとして)c.CommodityId = s.CommodityIdにSKU Sに参加左
SortId = @ SortId 1 =(dbo.isValiteを選択(BrandId、@ BrandId))と1 =(dbo.isExistsを選択(CSelectionAttribute、@ StrSelectionValueId))と1 =(dbo.comparePrice(SkuPriceを選択し、@ PriceA、@ PriceB))

を選択@Commodityから@HowManyCommodities = COUNT(*)
* @CommoditiesPerPage - RowNumber関数>(1 @PageNumber)@CommodityからCommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlity選択
@CommoditiesPerPageとRowNumber関数<= @PageNumber *を
行く

@HowManyCommoditiesに本当の宣言
のexecをGetExtractCommodityRefresh 19,0,0,1000,1,20、 '0'、1、出力HowManyCommodities @
選択@HowManyCommoditiesが
行きます

 

 

----商品により抽出された商品の状態がフィルタ
の作成のproc GetSelectionConditionCommodities

@SortId INT、
@BrandId INT、
@PriceA小数(8,2)、
@PriceB進(8,2)、
- @StrSelectionValueId VARCHAR(500)、 NARROW属性値Idを
@HowManyCommodities int型出力

AS
DECLARE @Commodity表

RowNumber関数int型、
CommodityId int型、
CommodityName VARCHAR(300)、
市場価格の小数(8,2)、
CommodityAddTime日時、
BrandId int型、
SortID int型、
CSelectionAttribute VARCHAR(300) 、
SkuImg VARCHAR(300)、
SkuPrice進(8,2)、
SkuQuanlityのINT

@Commodity。INSERT INTO
別個c.CommodityId、c.CommodityName、c.MarketPriceを選択(上からROW_NUMBER()(cc.commodityId順)、cc.CommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlityを選択し、 CCとしてc.CommodityAddTime、c.BrandId、c.SortId、c.CSelectionAttribute、s.SkuImg、s.SkuPrice、s.SkuQuanlity商品Cからc.CommodityId = s.CommodityIdにSKU Sに参加左)
SortId = @SortId 1 =((BrandId、@ BrandId)dbo.isValiteを選択)と1 = 1は=(dbo.comparePrice(SkuPriceを選択し、@ PriceA、@ PriceB))((CSelectionAttribute、@ StrSelectionValueId)dbo.isExistsを選択)

選択し@ @CommodityからHowManyCommodities = COUNT(*)は
@CommodityからCommodityId、CommodityName、市場価格、CommodityAddTime、BrandId、SortId、CSelectionAttribute、SkuImg、SkuPrice、SkuQuanlityを選択します

行く

@HowManyCommodities本物宣言し
、 '0'は、EXEC GetSelectionConditionCommodities 19,0,0,0をHowManyCommodities出力@
選択@HowManyCommoditiesは
行きます

 

ます。https://www.cnblogs.com/simpleBlue3/p/3879491.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33859665/article/details/93307531