Laden...

Datensätze hierarchisch anzeigen lassen

Erstellt von Fabian710 vor 10 Jahren Letzter Beitrag vor 9 Jahren 1.484 Views
F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren
Datensätze hierarchisch anzeigen lassen

verwendetes Datenbanksystem: SQL Server Management Studio 2008

Hallo Leute,
ich versuche die Datensätze aus meiner Tabelle hierarchisch anzeigen zu lassen. Habe schon ein wenig gegoogelt (Hierarchische Datenbankanfragen) doch es klappt noch nicht so ganz. Habe es mit folgendem Code probiert:


select level ,categorie_ID, LPAD(' ',2*(LEVEL-1)) || description description, group_ID
from Catalogue
start with categorie_ID=1
connect by prior categorie_ID = group_ID;	

Doch es wird das Level, LPAD Start With nicht erkannt...
Habt ihr eine Idee wie ich es stattdessen angezeigt bekommen?

R
212 Beiträge seit 2012
vor 10 Jahren

Ich hab die starke vermutung es gibt connect nicht in mssql

google mal nach UNION/UNION ALL

1.696 Beiträge seit 2006
vor 10 Jahren

Hallo,

das sieht nach Oracle aus und das geht mit MS SQL nicht. Schau mal hier: Rekursive Abfragen mit MS SQL

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 9 Jahren

Hallo,

das sieht nach Oracle aus und das geht mit MS SQL nicht. Schau mal hier: Rekursive Abfragen mit MS SQL

Grüße

Ich hab mich da mal etwas eingelesen...und meine Anfrage sieht nun wie folgt aus:


With Hierachy(categorie_ID, description, group_ID, Level)
AS
(
	SELECT categorie_ID, group_ID, description, 0 AS Level
	FROM Catalogue x
	WHERE x.categorie_ID = 'QK 50230365'
	UNION ALL
	SELECT x.categorie_ID, x.group_ID, x.description, y.Level+1
	FROM Catalogue x
	INNER JOIN Hierachy y
	ON x.group_ID = y.categorie_ID
)

SELECT categorie_ID, group_ID, description
FROM Hierachy
WHERE Level >0

Funktioniert auch, aber...ich hab ne Endlosschleife 😦 und ich weiß nicht warum?
So wie ich das sehe, zählt er den Level Wert immer hoch, obwohl er bei manchen zurückgehen müsste, weil dieser in der Hierarchie weiter oben steht...

1.696 Beiträge seit 2006
vor 9 Jahren

Hallo,

ohne Kenntnisse über deine DB-Struktur kann man schlecht was sagen. Und so eine Abfrage kann auch nicht in eine Endlosschleife sich entarten, das geht nicht, es sei denn während der Abfrage fütterst du die Tabellen unaufhörlich mit Daten.

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 9 Jahren

Also in der Tabelle Catalogue sind 181 Datensätze.
Wenn ich den Wert der MAXRECURSION mal hochstelle...sehe ich das mir weit über 10.000 Datensätze dazu angezeigt werden. Deshalb meine Vermutung, dass es sich um eine Endlosschleife handelt. Bei manchen Datensätzen muss ja ein Level Schritt zurück gemacht werden. Wird es aber leider nicht...

D
233 Beiträge seit 2008
vor 9 Jahren

Wie gesagt, ohne Datenmodell schwer erkennbar. Hast du vielleicht irgendeinen Parameter für den JOIN vergessen, sodass deine Zeilen mehrfach ausgegeben werden?

1.696 Beiträge seit 2006
vor 9 Jahren

Also in der Tabelle Catalogue sind 181 Datensätze.
Wenn ich den Wert der MAXRECURSION mal hochstelle...sehe ich das mir weit über 10.000 Datensätze dazu angezeigt werden. Deshalb meine Vermutung, dass es sich um eine Endlosschleife handelt. Bei manchen Datensätzen muss ja ein Level Schritt zurück gemacht werden. Wird es aber leider nicht...

Es könnte ja sein, dass deine Tabelle sehr viele Verschachtelungsdaten enthält, so dass die Ergebnismenge entsprechend explodiert.

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::