无限级类别查询问题(处理代码)
来源:互联网 发布:语音识别软件 编辑:程序博客网 时间:2024/05/01 16:31
有几层分类,如何得到中间一层下面所有子类的商品表?
分类数据表字段: ID,NAME,parentID(父ID,)
商品表字段:ID,NAME,typeID(关联分类表ID)
比如有三层:
层一:A,B,C
层二:A下的a1,a2,
层三:a1下的a1a,a1b.
a1a下有商品:x,y,z;a1b下有商品:xb,yb,zb
现在我点a1a可得到表:x,y,z
但我点a1,如何得到:x,y,z,xb,yb,zb?
Access数据库
用了一个晚上解决这个个问题,但不知道效率方面如何,先贴出来,大家探讨下:
/**//// <summary>
/// 数组,用于存储类别ID集
/// </summary>
ArrayList alTypeId = new ArrayList();
/**//// <summary>
/// 获取最底层类别ID,以便得到商品表
/// </summary>
/// <param name="_TypeId">所选类别ID</param>
/// <returns>所选类别下的最底层ID集,数组</returns>
private ArrayList GetTypeId(int _TypeId)
...{
try
...{
string sqlstr = "select t.type_id from WareType t where t.type_parentId in (" + _TypeId + ")";
DALHelp connobj = DALHelp.CreateInstance();
DataSet ds = connobj.runSQLDataSet(sqlstr);
DataTable dt = ds.Tables[0];
if (dt != null && dt.Rows.Count > 0)
...{
foreach (DataRow dr in dt.Rows)
...{
_TypeId = Convert.ToInt32(dr[0]);
GetTypeId(_TypeId);
}
}
else
alTypeId.Add(_TypeId);
return alTypeId;
}
catch (Exception ex)
...{
throw new Exception(ex.Message);
}
}
/**//// <summary>
/// 读取商品表by 类别ID
/// </summary>
/// <param name="_TypeID">类别ID</param>
/// <returns>所选类别商品表</returns>
public DataTable GetWaresByTypeID(int _TypeID)
...{
try
...{
if (_TypeID <= 0) return null;
alTypeId = new ArrayList();
alTypeId = GetTypeId(_TypeID);
string typeIds = "";
foreach (Object obj in alTypeId)
typeIds += obj + ",";
DALHelp cnnobj = DALHelp.CreateInstance();
DataSet ds = cnnobj.runSQLDataSet("SELECT w.ware_id, w.ware_name, w.ware_typeId, p.provider_id, p.provider_name FROM (WareInfo w Left JOIN ProviderInfo p ON w.providerId = p.provider_id) Where w.ware_typeId in (" + typeIds + ") Order by w.createDate DESC");
if (ds == null)
return null;
else
return ds.Tables[0];
}
catch (Exception ex)
...{
throw new Exception(ex.Message);
}
}
/// 数组,用于存储类别ID集
/// </summary>
ArrayList alTypeId = new ArrayList();
/**//// <summary>
/// 获取最底层类别ID,以便得到商品表
/// </summary>
/// <param name="_TypeId">所选类别ID</param>
/// <returns>所选类别下的最底层ID集,数组</returns>
private ArrayList GetTypeId(int _TypeId)
...{
try
...{
string sqlstr = "select t.type_id from WareType t where t.type_parentId in (" + _TypeId + ")";
DALHelp connobj = DALHelp.CreateInstance();
DataSet ds = connobj.runSQLDataSet(sqlstr);
DataTable dt = ds.Tables[0];
if (dt != null && dt.Rows.Count > 0)
...{
foreach (DataRow dr in dt.Rows)
...{
_TypeId = Convert.ToInt32(dr[0]);
GetTypeId(_TypeId);
}
}
else
alTypeId.Add(_TypeId);
return alTypeId;
}
catch (Exception ex)
...{
throw new Exception(ex.Message);
}
}
/**//// <summary>
/// 读取商品表by 类别ID
/// </summary>
/// <param name="_TypeID">类别ID</param>
/// <returns>所选类别商品表</returns>
public DataTable GetWaresByTypeID(int _TypeID)
...{
try
...{
if (_TypeID <= 0) return null;
alTypeId = new ArrayList();
alTypeId = GetTypeId(_TypeID);
string typeIds = "";
foreach (Object obj in alTypeId)
typeIds += obj + ",";
DALHelp cnnobj = DALHelp.CreateInstance();
DataSet ds = cnnobj.runSQLDataSet("SELECT w.ware_id, w.ware_name, w.ware_typeId, p.provider_id, p.provider_name FROM (WareInfo w Left JOIN ProviderInfo p ON w.providerId = p.provider_id) Where w.ware_typeId in (" + typeIds + ") Order by w.createDate DESC");
if (ds == null)
return null;
else
return ds.Tables[0];
}
catch (Exception ex)
...{
throw new Exception(ex.Message);
}
}
- 无限级类别查询问题(处理代码)
- java代码实现商品类别的无限级分类显示
- 无限分类添加新类别代码
- 无限分类添加新类别代码
- 需要分OS类别处理的代码
- R语言处理类别不平衡问题
- 求:三个类别表生成无限级...谢谢...
- 一个SQL按照类别各取一条记录查询问题
- ASP无限级分类代码
- [php类]多级类别树的生成(无限级select,二级管理菜单,无限级meizz的树)
- asp.net2.0 利用Dataset,从数据库导出并生成无限级类别的XML文件
- SQL Function(无限级分类根据ID获取其所有下属类别ID)
- 循环查询无限级的父级
- java前端查询类别、更新类别
- PHP递归查询的无限级分类
- SQL无限级查询,With 递归
- 无限级分类查询子类SQL
- Thinkphp 无限级菜单问题
- JCreator中编码 GBK 的不可映射字符终极解决方案
- 关于WebBrowser中弹出窗口(alert,confirm)的问题
- 汇编+c 实现面向对象
- 你的QQ为谁而亮?【zz】
- You Took My Heart Away !
- 无限级类别查询问题(处理代码)
- 引用计数
- MYSQL的select 学习笔记
- Oracle配置指南
- 动态标签实现源码
- 购物车的实现
- 欺骗的艺术
- 非交互登录
- C#实现关机