Microsoft
Software
Hardware
Network
Question : Find bottom level of an SQL Tree
I have an SQL table used to store a heirarchial tree - each record has an id (icostcentre_id) and a parent (icostcentre_parentid). The parent points to the immediate parent costcentre OR IS null if this is a top level cost centre. As such it is easy to find top level cost centres using a query of
SELECT icostcentre_id WHERE icostcentre_parentid IS NULL
and pretty easy to traverse the tree using a simple WHERE icostcentre_parentid = value statement.
My problem is that I want to identify those records which have no children - that is the cost centres at the bottom of the tree. I did try :-
SELECT icostcentre_id FROM icostcentre
WHERE icostcentre_id NOT IN (SELECT DISTINCT(icostcentre_paren
tid) FROM icostcentre)
thinking that this would return all records whose ID was not referenced by any children but this returned no records - I assume there is a problem because I am comparing icostcentre_id with icostcentre_parentid???
Please can you suggest a way of quickly identifying those records which have no children?
Answer : Find bottom level of an SQL Tree
SELECT i1.icostcentre_id
FROM icostcentre i1
left outer join icostcentre i2 on i1.icostcentre_id= i2.icostcentre_parentid
WHERE i2.icostcentre_parentid is null
Random Solutions
"Insert" query in VBA not working with SQL Server
Generating Unicode Characters in VFP 9
CHKDSK "processing USN bytes" at length. Should I just leave this to finish?
I need to send a form feed to printer (VB.NET & ASP.NET)
Renew SSL certificate with 2048 bit key length
please provide vb script to move 30days old files to new shared location along with subfolders
Read vertical data
Access 2007 links to SQL Server 2000 tables not updateable
Caluculate if met SLA for completetion of task- Problem
recordset to array