SQL临时表——分类页面的参数条件筛选
来源:互联网 发布:淘宝开店一件代发经验 编辑:程序博客网 时间:2024/05/16 09:36
在产品分类列表页面如何做到参数筛选,即如果该分类的参数是查询出来的,参数个数是不固定的,我们需要点击某个参数值去筛选产品,实现效果可以参见京东的分类列表页面。下面就是实现的方法,其中Product是产品表,Product_relate_spec是产品参数关联表,Product_relate_spec的结构如下:
另外有两个表在此没有体现出来,一个是三级类与参数关联表Product_spec,结构如下:
另一个是参数与产品的排列组合表Product_sku,结构如下:
/// <summary>/// 参数条件筛选下的分页查询/// </summary>/// <param name="strWhere">查询条件</param>/// <param name="pageSize">每页显示个数</param>/// <param name="pageIndex">页码索引(第几页)</param>/// <param name="filedOrder">排序</param>/// <param name="recordCount">需返回的总数</param>/// <returns></returns>public DataSet GetList(string strWhere, int pageSize, int pageIndex, string filedOrder, out int recordCount){ string sql = "select ProductID,ProductName,ProductPic,ProductPrice,AddTime"; string list = ""; StringBuilder strSql = new StringBuilder(); if (strWhere != null && strWhere.Trim() != "") { strSql.Append("WITH List AS (" + sql); strSql.Append(",spec_id from Product a inner join Product_relate_spec b on a.ProductID=b.product_id where prodAuditing=1"); } else { strSql.Append(sql + " from Product where prodAuditing=1"); } sql = strSql.ToString(); if (strWhere != null && strWhere.Trim() != "") { strSql.Append(")"); list = strSql.ToString(); string sql2 = " select ProductID,ProductName,ProductPic,ProductPrice,AddTime from List where "; string str = ""; foreach (string s in strWhere.Split(',')) { str += sql2 + s + " intersect "; } if (str.LastIndexOf("intersect") > -1) { sql = str.Substring(0, str.LastIndexOf(" intersect ")); sql = "select * from (" + sql + ") as T1"; } } recordCount = Convert.ToInt32(DataAccess.DC.GetSingle(list + PagingHelper.CreateCountingSql(sql))); return DataAccess.DC.Query(list + PagingHelper.CreatePagingSql(recordCount, pageSize, pageIndex, sql, filedOrder));}
实现思路是先将数据查询出存放到临时表List中,再根据传入的参数条件从临时表中查询数据,多个参数组合成多个sql语句,用intersect求这多个sql语句查询结果的交集。适当借助临时表,这样就可以实现多参数查询时也只访问一次数据库,提高查询效率。
阅读全文
0 0
- SQL临时表——分类页面的参数条件筛选
- mysql优化——临时表的创建条件
- 商品分类筛选条件建模数据表的设计
- 关于进行条件筛选的SQL关键字的一点理解
- Oracle SQL 动态拼接Where后面的筛选条件
- JQUERY手机商城各个分类商品条件筛选
- SQL 分类条件统计
- SQL 语句调优 where 条件 数据类型 临时表 索引
- Android——分类,筛选功能实现
- 临时表的特点及分类
- 超长查询,不同的查询条件,不同的参数,查出来的数据放在一个临时表中的方法
- SQL——处理页面多条件查询
- 临时表的分页SQL
- SQL 临时表的使用
- SQL 临时表的应用
- sql临时表的创建
- SQL 临时表的作用
- SQL临时表的使用
- 判断一个数是否为回文
- GC悲观策略之Serial GC篇
- 1003: ZCMU_A+B (V)
- Java语法基础总结
- 生活不只有感情
- SQL临时表——分类页面的参数条件筛选
- 责任链模式
- Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统
- 关于集合
- gerrit及git的基本安装使用
- XML+DTD+SAX+DOM4j+Schema
- SpringBoot搭建Java web工程
- HDU3746:Cyclic Nacklace
- 状压DP<旅行商问题>