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
How to create a text search facility with wildcard
ALTER TABLE / ALTER COLUMN QUESTION???
Access Query Design Where/Or Criteria Trouble (SQL Where)
SQL Server back-end not deleting record
Cannot execute stored procs from Access without using SQL Native Client driver
pause code in sql2008 through Access07
Visual Studio 2008 on VMWare Fusion 3 Tweaks (XP)
adding a text box to a radio button list?
RUNAS ERROR: Unable to acquire user password
Registering DLL in Win95