❶ 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
----------------------------------------
中国浙江省杭州市西湖区
中国江苏省南京市玄武区