phpbar.de logo

Mailinglisten-Archive

Rekursives SQL (mySQL 4.1)

Rekursives SQL (mySQL 4.1)

Christian Rütgers christian at ruetgers.net
Fre Aug 25 13:15:15 CEST 2006


Hi,

Ich benötige Hilfe bei einer Tabelle mit in sich referenzierten Werten.

Die Tabelle enthält eine ID, einen Wert und eine Referenz auf eine ID (siehe
Dump). Ich suche ein einzelnes SQL Statement mit dem ich die miteinander
referenzierten Werte in einer Zeile ausgeben kann. Ideal wäre ein Concat mit
dem Ergebnisse "erste Ebene -> zweite Ebene -> dritte Ebene".

Natürlich ist die Anzahl der miteinander referenzierten Datensätze, also die
Tiefe der Hierarchie beliebig.

An dem Layout der Tabelle kann ich nicht ändern (NestedSets würden das z.B.
lösen) weil ich mich im Rahmen einer bestehenden Applikation (dotproject)
bewege. Das ganze brache ich auch als ein einzelnes Select Statement, weil
ich es in ein komplexes Query zur Anreicherung der Daten einfügen muss.

Irgendein Vorschlag? Möglicherweise Umstieg auf mySQL 5.0 und dann über
einen View lösen? (wüsste aber auch hier keine Lösung, bin mit Views nicht
fit)


Dump:

CREATE TABLE reftab (
 reftab_id int(11) NOT NULL default 0,
 reftab_value varchar(80) NOT NULL default '',
 reftab_parent int(11) NOT NULL default 0
)

INSERT INTO reftab VALUES (1, 'erste Ebene', 0);
INSERT INTO reftab VALUES (2, 'zweite Ebene', 1);
INSERT INTO reftab VALUES (3, 'dritte Ebene', 2);


Vielen Dank,

Christian Rütgers

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive