create table catelog(
id int identity(1,1) not null primary key,
description nvarchar(50),
parent_id int -- 存放父节点的ID
)
go
-- 建索引提高查询性能。
create index ix_catelog_parent on catelog(parent_id)
go
Ⅱ 从数据库读取数据转化为树状菜单
以前在VS05中用的
string connstr = "server=(local);database=**;uid=**;pwd=**";
SqlConnection conn = new SqlConnection(connstr);
string commstr="select * from 软件信息表";
SqlDataAdapter da = new SqlDataAdapter(commstr,conn);
DataSet ds = new DataSet();
da.Fill(ds);
for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
MenuItem first = new MenuItem();
first.Value = ds.Tables[0].Rows[i][1].ToString();
mm.Items.Add(first);
Int32 软件ID = Int32.Parse(ds.Tables[0].Rows[i][0].ToString());
conn.Open();
string commstr1 = "select * from 类型表 where 所属软件=" + 软件ID;
SqlCommand comm1 = new SqlCommand(commstr1, conn);
SqlDataReader read = comm1.ExecuteReader();
while (read.Read())
{
MenuItem second = new MenuItem();
second.Value = read.GetValue(1).ToString();
first.ChildItems.Add(second);
}
conn.Close();
}
Ⅲ SQL存储过程显示树形菜单,该怎么处理
示范代码一(更改指定条件为列2为张三的数据): Update 表名 Set [列1]='22444',[列3]='asdasd' where [列2]='张三';示范代码二(更改前1000条数据,设置列2的值是张三) Update 表名 Set [列2]='张三' where (Select Top 1000 [列2] from 表名);
Ⅳ 如何用SQL语句查询树形菜单包含的所有数据
Sql Server 2000因为你这里说了只有三级分类,所以我就不写Sql函数了,得到华北下面所有子类别的ClassID(不包括华北的ClassID)select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51)
Ⅳ SQL树形层级查询
你好的!
oracle 的start with connect by
别的数据库用cte 递归都能达到你要的效果!
望采纳~
Ⅵ sql server 2005实现树形菜单显示的数据库表怎么设计
第一种:单表。
列分别为 id、菜单名称、子菜单id列表;
id:菜单的唯一编号
子菜单id列表:用逗号(或其他分隔符)分割的多个id的字符串,再由程序中进行处理,分割出多个id;
优点:查询速度非常快。
缺点:不利于维护和拓展,在进行菜单项排序时需要再多写代码进行处理。
第二种:单表内连接。
列分别为 id、菜单名称、父菜单id;
根节点的父菜单id为null或者0等一个可以唯一标志的。在查询时进行表内连接查询;
优点:利于表结构的维护和拓展,并且符合设计范式;
缺点:在查询时会造成一些麻烦,并且性能上会受到影响。
当然还有很多其他的方法,这里只例举2个比较常用的方法。
Ⅶ 求一条sql语句,树形结构
最后SQL语句返回的结果是什么?看一下以下语句行不行?
WITHAAS(SELECTpk_compID,Name,pk_fathercompPIDFROMcompany
UNIONALL
SELECTpk_dept,DeptName,pk_compFROMdept),
BAS
(SELECTCAST(NameASVARCHAR(200))Name,PID,IDFROMAWHEREPID=0
UNIONALL
SELECTCAST(B.Name+''+A.NameASVARCHAR(200)),A.PID,A.ID
FROMBJOINAONB.ID=A.PID)
SELECTNameFROMB
Ⅷ 如何用sql语句实现树形的数据库表查询
如果树的层数固定就可以用语句查询,但效率比较低。例如你说的三层:
select id,v2.name+name from t1 inner join
(select id,v1.name+name as name from t1 inner join
(select id,name from t1 where parentid = 0) v1 on t1.parentid = v1.id) v2 on t1.parentid = v2.id
Ⅸ 用sql语句能够解析出树形菜单吗
能,使用以下语句:
select * from table
start with id = ?
connect by prior id = ?
分从叶子到树根查询和从树根到叶子查询,具体用法自己查一下。