SQLite Self Join "unbestimmter tiefe"

godi

Aktives Mitglied
Hallo,

Ich habe eine Tabelle (SQLite) in der sind Ordner gespeichert und die Parent-Ordner des Ordners.
(Die Tabelle verweist auf sich selbst)
SQL:
DROP TABLE IF EXISTS "Ordner";
CREATE TABLE "Ordner" ("OrdnerID" INTEGER PRIMARY KEY  NOT NULL , "ParentID" INTEGER NOT NULL );
INSERT INTO "Ordner" VALUES(1,10);
INSERT INTO "Ordner" VALUES(2,10);
INSERT INTO "Ordner" VALUES(3,10);
INSERT INTO "Ordner" VALUES(5,50);
INSERT INTO "Ordner" VALUES(6,50);
INSERT INTO "Ordner" VALUES(10,70);
INSERT INTO "Ordner" VALUES(50,70);
INSERT INTO "Ordner" VALUES(70,100);

Jetzt würde ich gerne die Ordner ermitteln die in der "untersten" Ebene sind.
Also vom Ordner 10 würden dies dann 1,2,3 sein, von 70: 1,2,3,5,6

Funktioniert dies mit einen Self Join?
Da ja die Ordner-Tiefe variiert bin ich noch nicht dahinter gekommen wie so etwas zu lösen geht. :bahnhof:
Wie könnte dies Funktionieren?

godi
 

Evil-Devil

Top Contributor
Bei Bäumen die auf Parent aufbauen musst du leider einzelne Abfragen machen. Für solche Ordner Strukturen empfehlen sich Nested Sets.
 
M

maki

Gast
Nested Sets sind eine Möglichkeit, eine andere wäre bessere SQL Statements zu schreiben ;)

Wenn du jetzt noch felder für die Ebene (Level) und den Index/Position hättest, könntest du einen kompletten ORdner mit einem Statement auslesen.
 

jwiesmann

Bekanntes Mitglied
Geht doch so auch? .. oder ich hab die Frage nicht verstanden

SQL:
select ord1.ordnerID from ordner ord1 join ordner ord2 on ord1.parentID = ord2.OrdnerId
where ord1.parentID = 10;
 

godi

Aktives Mitglied
Geht doch so auch? .. oder ich hab die Frage nicht verstanden

Hast du leider falsch verstanden. ;)
Wenn du in deiner Query den Wert 70 oder 100 einsetzt dann kommst du nicht mehr auf die Children in der untersten Ebene sondern nur auf die direkten Children von 70 bzw 100.




Nested Sets sind eine Möglichkeit, eine andere wäre bessere SQL Statements zu schreiben ;)

Wenn du jetzt noch felder für die Ebene (Level) und den Index/Position hättest, könntest du einen kompletten ORdner mit einem Statement auslesen.

Kannst du mir dies bitte ein wenig genauer Erklären was du unter Level und Index/Position meinst?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Spring MongoDB self-reference Datenbankprogrammierung 2
S self-manytoone Datenbankprogrammierung 21
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
D Left Join mit Wioth Rollup Datenbankprogrammierung 0
S MySQL ehemaliger FULL OUTER JOIN zusammenstellen Datenbankprogrammierung 1
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
A Fehlermeldung: JOIN FETCH expressions cannot be defined with an identification variable Datenbankprogrammierung 0
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
S SQL join - NullPointerExeption Datenbankprogrammierung 3
E Mehrere Tabellenspalten mit INNER JOIN verknüpfen Datenbankprogrammierung 1
OnDemand LEFT JOIN id hat Null Datenbankprogrammierung 6
ruutaiokwu reihenfolge der operanden bei join's Datenbankprogrammierung 5
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
Kenan89 Datenbank Join Datenbankprogrammierung 16
M JPQL - Join Verkettung Datenbankprogrammierung 8
K SQL Inner Join - On Klausel Datenbankprogrammierung 10
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
kirchrath Hibernate Join - angejointes Objekt wählen Datenbankprogrammierung 2
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
G Join Abfrage Datenbankprogrammierung 12
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
T MySQL: Join auf sich selbst schlägt fehlt Datenbankprogrammierung 3
MQue Join n:m Datenbankprogrammierung 9
0x7F800000 MS-SQL Server 2008 Wie benutzt man da NATURAL JOIN / INNER JOIN USING? Datenbankprogrammierung 3
D join updaten in java Datenbankprogrammierung 4
G [Hibernate] Problem mit LEFT JOIN Datenbankprogrammierung 7
S Preparestatement mit join Datenbankprogrammierung 4
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
P Join Datenbankprogrammierung 4
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M Proble mit Selcet mit join und rst.next() Datenbankprogrammierung 15
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
E ERROR: argument of JOIN/ON must be type boolean? Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
E JOIN und * Datenbankprogrammierung 3
G Probleme mit Access und Join Datenbankprogrammierung 3
G PL/SQL: Join mit Collection Datenbankprogrammierung 5
T [SQL] Doppelter Join aus der selben Tabelle & Feldnnamen Datenbankprogrammierung 3
S JOIN und wohin damit? Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben