解决方案 »
- 两表查询问题,不知道哪里有错误
- access更新时出现标准表达式中数据类型不匹配
- treeview控件
- 存储多个List<string> 用什么
- firefox中xmlhttp.send(xml对象),得到的xml中文乱码怎么办
- 一个小问题
- 如何在datagrid里加DropDownList控件,想让dtgrid和ddlist分别绑定不同的数据源,如何解决?
- 手动刷新如何实现!!!
- sharepoint 2013中自定义站点的母版页中添加一个button,再添加一个cs,如何在cs中调用母版页的button事件
- asp.net站内搜索技术
- 给asp.net listview 中的image控件赋值
- 发布问题:asp.net和sql server做的网站,如何发布到外网
先查出父级菜单,order by id 然后根据id查子级id
---- ---- ---------- ----
1 1 手机 0
1 3 IPHONE 1
1 4 HTC 1
1 5 小米 1
2 2 电脑 0
2 6 Apple 2
2 7 华硕 2
2 8 三星 2(8 行受影响)
DECLARE @KIND VARCHAR='0'
SELECT * FROM
(SELECT A.ID AS TAG,B.* FROM
(SELECT * FROM tb_inc WHERE Kind=@KIND) A
JOIN tb_inc B ON A.ID=B.Kind
UNION ALL
SELECT ID AS TAG,* FROM tb_inc WHERE Kind=@KIND ) C
GROUP BY C.TAG,C.ID,C.Kind,C.Name
create table tempTable(
Id int,
Name varchar(20),
Kind int
)
insert tempTable(Id,Name,Kind)
select '1','手机',0 union
select '2','电脑',0 union
select '3','IPHONE',1 union
select '4','华硕',2 union
select '5','HTC',1create table tempTable1(
Id int,
Name varchar(20),
Kind int
)
declare @parentId int
-- 定义游标
declare p_cursor cursor for select distinct id from tempTable where Kind=0
open p_cursor
fetch next from p_cursor into @parentId
while @@FETCH_STATUS = 0
begin
-- 插入父节点
insert tempTable1(Id,Name,Kind)
select * from tempTable where Id = @parentId
-- 插入孩子节点
insert tempTable1(Id,Name,Kind)
select * from tempTable where Kind = @parentIdfetch next from p_cursor into @parentId
end
close p_cursor -- 循环完毕 ,关闭游标
DEALLOCATE p_cursor select * from tempTable1
drop table tempTable
drop table tempTable1
1 手机 0 0,1
2 电脑 0 0,2
3 IPHONE 1 0,1,3
4 HTC 1 0,1,4
5 小米 1 0,1,5
6 Apple 2 0,2,6
7 华硕 2 0,2,7
8 三星 2 0,2,8
1 手机 0 1
3 IPHONE 1 1
5 HTC 1 1
2 电脑 0 2
4 华硕 2 2
二、三楼正解!学习了。
1. Kind=0表示的是一级栏目,那么用他的ID*10000 作为这个排序列的值,那么手机是10000,电脑是20000.
2. Kind》0,用他的Kind*10000 +ID 作为这个排序列的值, 比如HTC 1*10000+4 =10004,这样它自然就排到手机下面了看代码:select ID,Name,Kind
from
(
select ID,Name,Kind,ID*10000 as orderbyID from T where Kind=0
union
select ID,Name,Kind, Kind*10000 + ID as orderbyID from T where not Kind=0
) as TA
order by orderbyID