表 category 字段
category_id(类别编号) category_name(类别名称) f_id(所属父类)
101 服饰 0
102 男装 101
103 衬衫 102
表 products 字段
products_id(类别编号) products_name category_id(类别名称)
1 李宁运动服衬衫 103这个为表的结构:
由 商品李宁运动服衬衫 可以查询出相关的类别,现在每个类别
边上有个复选框checkbox 可以让其选中,当三个类别都选中
的时候让他输出最小的类(103 衬衫)
当(服饰,男装)选中的时候让其选中 男装
总之选中被选择中最小的子类请教这个sql怎么写请大家多多指教谢谢
category_id(类别编号) category_name(类别名称) f_id(所属父类)
101 服饰 0
102 男装 101
103 衬衫 102
表 products 字段
products_id(类别编号) products_name category_id(类别名称)
1 李宁运动服衬衫 103这个为表的结构:
由 商品李宁运动服衬衫 可以查询出相关的类别,现在每个类别
边上有个复选框checkbox 可以让其选中,当三个类别都选中
的时候让他输出最小的类(103 衬衫)
当(服饰,男装)选中的时候让其选中 男装
总之选中被选择中最小的子类请教这个sql怎么写请大家多多指教谢谢
CREATE get_info
@cid1 int ---- 一级ID
@cid2 int = NULL, ---- 二级ID
@cid3 int = NULL ---- 三级ID
as
BEGINIF @cid1 IS NULL
BEGIN
RAISERROR('必须选择 服饰', 16, 1);
END
ELSE
IF @cid2 IS NULL
SELECT * FROM Category WHERE Category_id = @cid1
ELSE
IF @cid3 IS NULL
SELECT * FROM Category WHERE Catergory_id = @cid2
ELSE
SELECT * FROM Products WHERE Category_id = @cid3END
go
没测试, 不好意思. (估计你要的就是这个了)
....
伪代码如下:
声明字符串变量 @s
设置 @s 初始值 @s='1=1 and'
如果 checkbox1 选中则 @s=@s+' or a.category_name=''服饰'''
如果 checkbox2 选中则 @s=@s+' or a.category_name=''男装'''
如果 checkbox3 选中则 @s=@s+' or a.category_name=''衬衫'''
然后写 SQL 语句:'select top 1 a.category_name from @t a'+
' left join @t b on b.f_id=a.category_id'+
' left join @t c on c.f_id=b.category_id'+
' where'+@s+
' order by a.category_id desc'