Home > Archive > Microsoft SQL Server forum > June 2005 > query to trace all parents









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author query to trace all parents
PYCTAM

2005-06-23, 1:23 pm

Hi,

I have a table with filled out below data:

+------+-----+
|parent|child|
+------+-----+
|A |B |
|B |C |
|B |E |
|C |D |
|E |F |
|E |G |
+------+-----+

So I have to make a query which get all 'parent' values values for
given child value.

For example :
-----------------
If I have to get all parent values for 'D' child., query must get this
values : C, B, A.

If I have to get all parent values for 'F' child., query must get this
values : E, B, A.

If I have to get all parent values for 'C' child., query must get this
values : B, A.

If I have to get all parent values for 'B' child., query must get this
values : A only.
-----------------

Is it possible to create a query which will covers all above conditions
or not using only sql statement without UDF or stored procedures.

Any solutiuons?

Sincerely,
Rustam Bogubaev

Erland Sommarskog

2005-06-23, 8:23 pm

PYCTAM (rbogubaev@bookintur
key.com) writes:
> So I have to make a query which get all 'parent' values values for
> given child value.
>
> For example :
> -----------------
> If I have to get all parent values for 'D' child., query must get this
> values : C, B, A.
>
> If I have to get all parent values for 'F' child., query must get this
> values : E, B, A.
>
> If I have to get all parent values for 'C' child., query must get this
> values : B, A.
>
> If I have to get all parent values for 'B' child., query must get this
> values : A only.
> -----------------
>
> Is it possible to create a query which will covers all above conditions
> or not using only sql statement without UDF or stored procedures.


In SQL2000, no.

In SQL 2005, slated for release in November, there is support for
recursive queries.


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp
PYCTAM

2005-06-24, 11:24 am

in this hopeless situation problem is solved using UDF :

CREATE FUNCTION getAllParents(
@child NVARCHAR(1)
) RETURNS @PARENTS TABLE (
[parent] NVARCHAR(1)
) AS BEGIN
DECLARE @parent NVARCHAR(1)

SELECT @parent = parent FROM table WHERE child = @child

WHILE @@ROWCOUNT = 1 BEGIN
INSERT @PARENTS SELECT @parent

SELECT @child = @parent
SELECT @parent = parent FROM table WHERE child = @child
END

RETURN
END

--CELKO--

2005-06-24, 8:23 pm

Again, get a copy of TREES & HIERARCHIES IN SQL and look up the Nested
Sets Model for trees.

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com