【发布时间】:2013-02-16 18:30:51
【问题描述】:
使用 asp.net mvc 应用程序和 c#。我们正在开发一个搜索页面。
更新了我的答案。请在下面查看我自己的答案并提出建议
不幸的是 select into 在 sql azure http://blogs.msdn.com/b/sqlazure/archive/2010/05/04/10007212.aspx 中不起作用
帮帮我
我有下表来显示我的项目搜索结果
物品表
- ITEMID、SHOPID、ITEMNAME、DESCRIPTION、PRICE、CATID
商店表
- SHOPId、标题、CITYID、活动
城市表
- CITYID、CITYName、REGIONID、CountryISO
分类表
- CATID、CATNAME
这是我的搜索查询,它给出了给定条件的分页结果
DECLARE @unitItems INT=20
DECLARE @sortOrder INT=0
DECLARE @catId INT
DECLARE @search NVARCHAR (100)=''
DECLARE @REGIONID INT=0
DECLARE @cityId INT=0
DECLARE @maxPrice DECIMAL (10, 2)
DECLARE @page INT
DECLARE @currentDate DATETIME2 (0)
set @unitItems=20
set @catId=0
set @sortOrder=0
set @search=''
set @cityId=1
set @maxPrice=0
set @page=1
set @currentDate='2013-02-24 13:14:58.073'
;WITH itemresult AS (
SELECT IT.ITEMID, IT.ITEMNAME, IT.DESCRIPTION, IT.PRICE,
IT.CATID, C.CATNAME AS CATNAME,S.HEADER AS SHOPHEADER,CI.CITYNAME AS CITY,
ROW_NUMBER() OVER (ORDER BY IT.SHOWDATE DESC) AS RowNumber
FROM ITEM AS IT INNER JOIN SHOP AS S ON IT.SHOPId = S.ShopId
INNER JOIN CITY AS CI ON CI.CITYID = S.CITYID
INNER JOIN COUNTRY AS CY ON CI.COUNTRYISO = CY.COUNTRYISO
INNER JOIN REGION AS R ON CI.REGIONID = R.REGIONID
INNER JOIN CITY AS CI2 ON CI2.CITYID = @cityId
INNER JOIN CATEGORY AS C ON IT.CATID = C.CATID
WHERE S.ACTIVE = 1
GROUP BY IT.ITEMID, IT.ITEMNAME, IT.HEADER, IT.DESCRIPTION, IT.PRICE,
IT.CATID, IT.SHOWDATE,S.HEADER,C.CATNAME,CI.CITYNAME)
SELECT IT.*, CEILING(CAST(RN AS float) / @unitItems) AS UNITPAGES, RN AS UNITROWS
FROM itemresult IT
INNER JOIN (SELECT Max(RowNumber) AS RN FROM itemresult) SUBQ ON 1=1
WHERE IT.RowNumber BETWEEN (@page - 1) * @unitItems + 1
AND @unitItems * @page
问题:
现在的问题是我们要在 UI 中添加新的更改。搜索 UI 现在将显示如下内容
第一个结果集 -->假设总共找到 230 条记录
您在 Fiddle 中看到的搜索结果
第二个结果集 -->来自 230 条记录的不同类别和计数
CatId、CatName、TotalCountInSearch
例如:1 本书 25 和 2 体育 43 和 8 其他 52。 显示我可以在 UI 中显示如下
- 所有类别 (120)
- 书籍 (25)
- 运动 (43)
- 其他 (52)
和第三个结果集 -->不同的城市和来自 230 条记录的计数
CityId、CityName、TotalCountInSearch
用于在 UI 下方显示
- 所有城市(10)
- 钦奈 (4)
- 班格罗尔 (3)
- 其他 (3)
我如何检索这些计数和名称,如所有类别、书籍、 所有城市等?欢迎任何帮助或建议。
Click and View SQL Fiddle here
我想根据搜索条件获取这些计数。希望从我的过程中检索这个作为另一个结果集
主要更新:
我在这里上传了所有架构和实际动态查询 https://github.com/Padayappa/SQLProblem/blob/master/PaginationIssue
【问题讨论】:
-
问题不是很清楚。如果您可以显示给定小提琴的预期结果,那么您的要求将很容易理解?
-
看起来和这个sqlfiddle.com/#!3/52bbb/61相似
-
抱歉,既然您已经获得了所需的结果,那么这些查询有什么问题?您的意思是您需要一次性获得这 3 个结果集吗?
-
@Kaf,我希望所有 3 个结果集都在同一个过程中。我的意思是执行一个搜索程序应该返回搜索结果、城市计数、类别计数信息。我不是 SQL 方面的专家。这个查询是由一位同事写的,他离开了。我不知道在不影响性能的情况下获取城市、类别信息的效率如何
-
我已经回答了这个问题,还添加了一些我认为对您有用的额外细节。前任;如何从
SSMS/C#执行名为myStoredProcedure的新程序
标签: c# asp.net sql sql-server sql-server-2008