我的Access数据库: 分类表(Category)结构
cid(int) CategoryName(varchar) ParentID(int)
**当为根分类进ParentID=0,某分类的下级分类的ParentID为其cid
**分类最多两级,即只有根分类及下级分类
产品表(Product)结构:
productID(int) productName(varchar) cid(int) level(smallint)
**最后的level为产品等级
求Select语句:
1) 如何用一句sql语句选取某一分类及子分类的前5条 level = 3 的产品
2) 如何用一句sql语句选取所有分类及其子分类的前5条 level = 3 的产品
(如果一句实在不行,对分类的操作和对产品的操作可以分开)谢了
cid(int) CategoryName(varchar) ParentID(int)
**当为根分类进ParentID=0,某分类的下级分类的ParentID为其cid
**分类最多两级,即只有根分类及下级分类
产品表(Product)结构:
productID(int) productName(varchar) cid(int) level(smallint)
**最后的level为产品等级
求Select语句:
1) 如何用一句sql语句选取某一分类及子分类的前5条 level = 3 的产品
2) 如何用一句sql语句选取所有分类及其子分类的前5条 level = 3 的产品
(如果一句实在不行,对分类的操作和对产品的操作可以分开)谢了
解决方案 »
- 灌了100分,发个帖讨论下updatepanel
- 请高手帮忙解释段代码~~
- ExtAspNet.Tree控件如何添加右键菜单
- asp的方式写asp.net
- asp.net 2.0 如何隐藏 url下的链接路径?
- 自己做网站,服务器上的word文件,在线打开修改了文档,怎么保存到服务器上去,或者能实现相同功能也行?标题够长了吧
- 谁能说说对象持久化的作用
- 求VS2008安装文件中的WebDesignerCore.exe文件
- 我想编给留言本,用什么控件好?用TABLE吗?
- DropDownList没有ReadOnly属性,怎样使起字体不为灰色并有焦点。
- 池连接的问题
- 我的网站放在租用的空间上,访问速度很慢
-----------------------------
http://www.yanmingxuan.com.cn/
我的blog里面有一个方法。可以看看的。
*******************************************
你那个只是取前两条的,没有下级或上级分类
改成 top 5 不就是前五条了嘛。某一分类及子分类的前5条 。 这个本来就不通顺吗?父级和子级怎么放在一起取前五条呢?所有分类及其子分类的前5条 同样的道理,你想想你要的记录集会是什么样子的呀。
******************************************************************************某一分类及子分类的前5条 。 这个本来就不通顺吗?父级和子级怎么放在一起取前五条呢?
所有分类及其子分类的前5条 同样的道理,你想想你要的记录集会是什么样子的呀。注明:这句话的意思,是选取某一大类及其子类下的前5个产品level=3的产品,这个没问题啊
就是希望大类和子类(只有二级)放在一起取前5条
最多两层,就是大类和小类
你试试吧,呵呵,第二个好像有点麻烦,我不是太会!
第一个:select top 5 * from [GateGory] where cid=(select cid from [Product] where level=3) or ParentID=(select cid from [Product] where level=3)
你试试吧,呵呵,第二个好像有点麻烦,我不是太会!
***************************
先谢了,这样的应该是经常用到啊,怎么会没人应呢?
1.select * from product where cid=(select cid from Category where CategoryName='某一分类') and level=3 and rownum<=5 2.select * from product where level=3 and rownum<=5 这样不行吗?
***********************************
不是这样的
不是这样的结果
cid in (select cid from Category where ParentID=1)
or cid=1
难点就是如何让2中的or前后的ParentID和cid相同,如果解决了,再套一次就好了
Depth:代表此节点的深度
Path:代表从根节点到此节点的路径,使用节点名称不可能出现的字符作为分隔符在添加删除修改移动节点时,要维护好上述两个属性非常容易,然后却能够为你的查询带来极大的方便。你要3级节点是不是?WHERE Depth = 3,这就行了。
cid(int) CategoryName(varchar) ParentID(int)建议多设个字段 zhid=cast(cid as char)+cast(parentid as char)
假如 有数据
001 饮料 0 0001 (zhid)
002 可口可乐 001 001002(zhid)
003 百事可乐 001 001003(zhid)查询 饮料类的话用(select * from category where zhid like '001%')
这样方便多了