habe folgendes problem
Tabelle Tier
(TNr, Vater, Mutter) ....inserts:
(1,null,null)
(2,null,null)
(3,1,2)
(4,1,2)
(5,1,2)
(6,4,5) .... bin mir der inzucht im klaren
![:)](/images/smilies/smile.gif)
(7,4,3).... und das Tier 4 Tier 5 mit Tier 3 betrügt
muss jetzt eine stored procedure(am SQL Server) schreiben die mit dem Aufruf:
exec Stammbaum 7
folgendes ausgibt:
Tier 7
Vater 4
Mutter 3
----
Tier 4
Vater 1
Mutter 2
----
Tier 3
Vater 1
Mutter 2
---
Tier 1
Kein Vater mehr angegeben ENDE
Keine Mutter mehr angegeben ENDE
---
Tier 2
Kein Vater mehr angegeben ENDE
Keine Mutter mehr angegeben ENDE
---
Tier 1
Kein Vater mehr angegeben ENDE
Keine Mutter mehr angegeben ENDE
---
Tier 2
Kein Vater mehr angegeben ENDE
Keine Mutter mehr angegeben ENDE
Rekursiv funktioniert das schon ganz wunderbar mit folgenden Algorithmus:
create procedure eltern_ausgeben(@TNr int)
as
begin
set nocount on
declare @Vater int
declare @Mutter int
declare @Art varchar(128)
declare @G char(1)
declare @gebdat datetime
Select @gebdat = GebDat,@G = Geschlecht,@Art = Name,@Vater = Vater, @Mutter = Mutter from Tier where TNr = @TNr
print 'Tier ' + cast(@TNr as varchar(5)) + ',' + @Art + ',' + @G + ', geboren am ' + cast (@gebdat as varchar(20))
print ' Vater: Tier ' + cast(@Vater as varchar(5))
print ' Mutter: Tier ' + cast(@Mutter as varchar(5))
if not @Vater is null
begin
exec eltern_ausgeben @Vater
end
if not @Mutter is null
begin
exec eltern_ausgeben @Mutter
end
end
go
----
Brauche aber einen Algorithmus um die sache per schleife auszugeben! mit einer Temporären Tabelle und einer Stored Function! Freeks gefragt! Danke! ist es überhaupt möglich einen Baum NICHT rekursiv abzuarbeiten?