Bil*_*lla 8 c# sql sql-server asp.net sql-server-2008
使用asp.net mvc应用程序和c#.我们正在开发搜索页面.
更新了我的答案.请在下面查看我自己的答案并提出建议
不幸的是,选择进入sql azure不起作用http://blogs.msdn.com/b/sqlazure/archive/2010/05/04/10007212.aspx
帮我
我有以下表格来显示我的项目搜索结果
物品表
商店表
城市表
分类表
这是我的搜索查询,它给出了给定条件的分页结果
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
Run Code Online (Sandbox Code Playgroud)
问题:
现在问题是我们在UI中添加了新的更改.现在搜索UI将显示如下所示的内容
第一个结果集 - >假设总共找到230条记录
正如您在小提琴中看到的那样搜索结果
第二个结果集 - > 230个记录中的不同类别和计数
CatId,CatName,TotalCountInSearch
例如:1本书25&2体育43和8其他52.显示我可以在UI中显示如下
而第三个结果设置 - >不同的城市和230点的记录计数
CityId,CityName,TotalCountInSearch
用于在UI中显示
我如何检索这些计数和名称,如所有类别,书籍,所有城市等?欢迎任何帮助或建议.
我想根据搜索条件得到这些计数.希望将此作为我程序的另一个结果集来进行检索
主要更新:
我在这里上传了所有架构和实际动态查询 https://github.com/Padayappa/SQLProblem/blob/master/PaginationIssue
这是根据类别检索计数
select 'All categories' catname, count(*) catcount from itemtable
union all
select catname, count(catid) catcount
from itemtable inner join categorytable on categorytable.catid = itemtable.catid
group by catname
Run Code Online (Sandbox Code Playgroud)
这是根据城市检索计数
select 'All cities' cityname, count(*) catcount from itemtable
union all
select cityname, count(catid) catcount
from itemtable inner join shoptable on itemtable.shopid = shoptable.shopid
inner join citytable on citytable.cityid = shoptable.cityid
group by cityname
Run Code Online (Sandbox Code Playgroud)