URL: https://www.overclockers.at/applications/suche_baum_ausgabe_algorithmus_ohne_rekursion_169037/page_1 - zur Vollversion wechseln!
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 
(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?
Ja dies ist möglich. Studiere Informatik auf der TU Wien.
Dort haben wir "Algorithmen und Datenstrukturen 1" gehabt.
War eine "Fleißaufgabe" in der Übung - Habs selber ned gemacht damals, weil ich:
1) Nicht gerne codes schreibe (schon gar ned an der Tafel) und
2) weil ichs für ABSOLUT unnötig erachte!
Hab das Skript ned hier. Suchs mal im Wikipedia oder so
hab kurz mal gegoogelt... vielleicht hilfts was
http://authors.aspalliance.com/mama...?p=sqlrecursive
ohne das jetzt zu studieren: schau dir mal nested sets an
Nur so nebenbei: kann mir nicht vorstellen, dass deine Funktion tatsächlich diese Ausgabe liefert, denn die Rekursion ist eine Tiefensuche (zuerst immer den Vater-Pfad entlang), während die Ausgabe eine Breitensuche ist (Generation 1,2,3,..)
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026