当前位置:首页 » 编程语言 » 树的层级sQL
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

树的层级sQL

发布时间: 2022-05-21 09:40:14

sql树形层级查询

你好的!
oracle 的start with connect by
别的数据库用cte 递归都能达到你要的效果!
望采纳~

❷ sql树形查询分级

必须设置好表的parentID,ID第一级设置为0
witht1as(
selecttreelevel=1,parentID,ID,cast(1asvarchar(20))ROWNUMfrom表whereID=0
unionall
selecttreelevel=treelevel+1,t2.parentID,t2.ID,cast(t1.ROWNUM+'.'+cast(row_number()over(orderbyt2.itemid)asvarchar(10))asvarchar(20))ROWNUMfrom表t2joint1ont2.parentID=t1.id

)

select*fromt1orderbyROWNUM

❸ sql 查询树型结构

select parent,child from test where parent in(select child from test where parent='a')
是这样的么??不晓得对不对.

❹ 关于SQL查询树结构数据的语句

方法1:
是否可以有代表层次的字段,若有,直接根据层次字段查询;
方法2:
是否存在以下假设:
非父级的dept_uid的 不可能 在 parent_uid 中出现。
如果假设成立,在查出的所有dept_uid中去掉,所有在在 parent_uid 中出现id,
剩下的就是你要的了。

❺ sql里树形结构分组排序

createtableT1(thisvarchar(10),parentvarchar(10))
insertintoT1(this,parent)
values('id1',null)
,('id2',null)
,('id3','id1')
,('id4','id2')
,('id5','id3')
,('id6','id3')
,('id7','id4')
,('id8','id7')

--sqlserver的cte功能
withtree(this,parent,root,depth)as(
selectthis,parent,thisasroot,
unionall
selecta.this,a.parent,b.root,b.depth+1asdepthfromT1a,treebwherea.parent=b.this
)
selectthis,parent,root,depth
fromtree
orderbyroot,depth,this

❻ 用c#和SQL建立二叉树(层次序列),要深度四层,四层以内没有数据的可以显示“未注册!”

使用递归算法,下面是我写的一个例子,代码如下:
//private void InitServer(TreeNode pnode, DataTable dt)
//{
// string pid = "0";

// if (pnode != null)
// {
// pid = pnode.Value;
// }

// DataRow[] rows = dt.Select("parentid =" + pid + "");

// if (rows.Length > 0 && pnode != null)
// {
// pnode.SelectAction = TreeNodeSelectAction.Select;
// }

// for (int i = 0; i < rows.Length; i++)
// {
// TreeNode node = new TreeNode();
// node.Text = rows[i]["item"].ToString();
// node.Value = rows[i]["id"].ToString();
// node.NavigateUrl = "AddAdmin.aspx?id=" + node.Value;
// node.Target = "info";
// node.Expanded = false;
// if (pid == "0")
// {
// //tvServer.Nodes[0].ChildNodes.Add(node);
// tvServer.Nodes.Add(node);
// }
// else
// {
// pnode.ChildNodes.Add(node);
// }
// InitServer(node, dt);
// }
//}
//private DataTable GetServer()
//{
// DataTable dt = new DataTable();
// info.Open("select [id],item,parentid from Item");
// dt = info.m_table;
// info.Close();
// return dt;
//}
你自己把注释去掉吧!有些地方自己修改一下哈,反正我用过!

❼ 如何用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查询树结构

如果你用SQL Server 2K5,那你有福了。因为可以用CTE(公用表表达式)来做。

这是MSDN的一个例子,你要的根据这个修改吧。
USE AdventureWorks;
GO
WITH DirectReports(Name, Title, EmployeeID, EmployeeLevel, Sort)
AS (SELECT CONVERT(varchar(255), c.FirstName + ' ' + c.LastName),
e.Title,
e.EmployeeID,
1,
CONVERT(varchar(255), c.FirstName + ' ' + c.LastName)
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE e.ManagerID IS NULL
UNION ALL
SELECT CONVERT(varchar(255), REPLICATE ('| ' , EmployeeLevel) +
c.FirstName + ' ' + c.LastName),
e.Title,
e.EmployeeID,
EmployeeLevel + 1,
CONVERT (varchar(255), RTRIM(Sort) + '| ' + FirstName + ' ' +
LastName)
FROM HumanResources.Employee as e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID
)
SELECT EmployeeID, Name, Title, EmployeeLevel
FROM DirectReports
ORDER BY Sort;
GO

❾ MSSQL 通过分类树,任意选择分类,查询分类下的所有产品.求高效SQL语句

首先LZ这么复杂的问题,就给这点分,少说也给个几万财富,或是支付点咨询费。O(∩_∩)O

=========================================================================

首先你这个就10万单品,不是太多。

使用中间表聚集的方式就可以了,但是又要兼顾实时性所以我就用索引视图了,如果数据库版本低可以维护一个表,其实维护表可以用外键。更好一些。

withPNoSec(PNO)as
(
select'100409%'unionall
select'040205%'unionall
select'010107%'
)
select
P.*
fromPNoSecA
innerjoindbo.VPNoProRelBon(B.PNOlikeA.PNO)
innerjoindbo.ProctPon(B.PID=P.ID)
whereP.Namelike'欧莱雅%'

你的程序就是构建SQL片断(管理分类不能有重复)

如果数据库版本低,可以使用临时表的方式。这个你自己拿捏吧。


以上方案小巧灵活,应对几十万单品不在话下。

❿ sql组织机构树查询

组织等级是四层,应该显示四列才完整

createtablestat(codevarchar(10),parentvarchar2(10),slevelvarchar(10));
INSERTINTOSTATVALUES('中国','0','国家');
INSERTINTOSTATVALUES('浙江省','中国','省');
INSERTINTOSTATVALUES('江苏省','中国','省');
INSERTINTOSTATVALUES('杭州市','浙江省','市');
INSERTINTOSTATVALUES('南京市','江苏省','市');
INSERTINTOSTATVALUES('西湖区','杭州市','县/区');
INSERTINTOSTATVALUES('玄武区','南京市','县/区');
SELECTA.PARENT,A.CODE,B.CODE,C.CODE
FROMSTATA,STATB,STATC
WHEREA.CODE=B.PARENT
ANDB.CODE=C.PARENT
ANDA.PARENT='中国';
PARENTCODECODECODE
----------------------------------------
中国浙江省杭州市西湖区
中国江苏省南京市玄武区