1. 關於sql查詢樹結構數據的語句
方法1:
是否可以有代表層次的欄位,若有,直接根據層次欄位查詢;
方法2:
是否存在以下假設:
非父級的dept_uid的 不可能 在 parent_uid 中出現。
如果假設成立,在查出的所有dept_uid中去掉,所有在在 parent_uid 中出現id,
剩下的就是你要的了。
2. 資料庫設計 國家表 國家編號:char(3) 國名:vARCHAR(50) 省市表 省市編號:char(3) 省市名:varchar(50)
(1)要求查找」中國河北省「的所有縣名。該如何查找,寫出SQL語句
SELECT
縣郡表.縣郡名
FROM
國家表 JOIN 省市表 ON ( 國家表.國家編號 = 省市表.國家編號 )
JOIN 縣郡表 ON ( 縣郡表.省市編號 = 省市表.省市編號 )
WHERE
國家表.國名 = '中國' AND 省市表.省市名 = '河北'
(2)在功能不變的前提下,將上述三表合並成一個表,該如何設計?在你的設計中,實現上述查找的SQL語句該如何寫
CREATE TABLE 國省縣 (
國名:vARCHAR(50),
省市名:varchar(50),
縣郡名:VarChar(50)
)
SELECT
縣郡名
FROM
國省縣
WHERE
國名 = '中國' AND 省市名 = '河北'
3. SQL里樹狀結構的表,找樹葉節點。
找樹葉簡單啊
SELECT
*
FROM
表 main
WHERE
NOT EXISTS (
SELECT * FROM 表 sub WHERE main.ID = sub.ParentID
)
也就是對於 表的 每一行, 不存在有其他行的數據, ParentID 等於 當前行的 ID
4. 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
----------------------------------------
中國浙江省杭州市西湖區
中國江蘇省南京市玄武區
5. sql 查詢樹型結構
select parent,child from test where parent in(select child from test where parent='a')
是這樣的么??不曉得對不對.
6. SQL更新樹結構(計算產品標准工時)
你的意思是父產品的工時由自身和子產品的工時共同決定嗎?
如果一定要在sql里操作了吧,那就寫個觸發器吧。在子產品被update時,根據新數據去更新父產品
7. 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
8. SQL Server 2000 樹狀結構
展bom表的話,一般寫procere,用遞歸調用自己查找下階,直到最後階
----
這個。。。。比較復雜,我只寫過類似展bom的proceudre,oracle的
但是不知道怎麼說。。。。。
要用到遞歸,游標
而且bom層數多的話跑起來速度很慢,不小心還會死循環。。。。
簡單來說,就是procere一次展一層,比如把需展的成品A展到半成品B,C
然後把半成品B,C當做成品,重復調用自己展下一層DEF。。。直到到底為止(也可以自己設定展到幾層就停)
9. 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
10. 如何用SQL解決樹查詢問題,急!!!
oracle中的select語句可以用START WITH...CONNECT BY PRIOR子句實現遞歸查詢,connect by 是結構化查詢中用到的,其基本語法是:
select * from tablename start with cond1
connect by prior cond2
where cond3;
簡單說來是將一個樹狀結構存儲在一張表裡,比如一個表中存在兩個欄位:
id,parentid。那麼通過表示每一條記錄的parent是誰,就可以形成一個樹狀結構。
用上述語法的查詢可以取得這棵樹的所有記錄。
其中COND1是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。
COND2是連接條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR ID=PRAENTID就是說上一條記錄的ID是本條記錄的PRAENTID,即本記錄的父親是上一條記錄。
COND3是過濾條件,用於對返回的所有記錄進行過濾。