Harlequin: Bäume aus Datenbank selektieren

Beitrag lesen

Yerf!

Ich versuch gerade Navigationsbäume aus einer Datenbank zu selektieren, sprich: eine baumförmige Struktur hinter der IDs stecken, die als Fremdschlüssel in einer anderen Tabelle auftauchen. Das ganze sollte allgemein funktionieren, zumindest aber in Oracle 10 und Access.

Ist aber auch egal... eigentliches Problem:

Ich möchte das in einer einfachen und einheitlichen Struktur machen.

Idee: Ich liefere 3 Spalten zurück: ID, Name und ParentID

Das lässt sich gut verarbeiten und (eigentlich) einfach erstellen.

Problem: die Struktur in der Datenbank... die verschiedenen Ebenen der Baumstruktur liegen in unterschiedlichen Tabellen und die ID-Bereiche überschneiden sich dementsprechend. Wenn ich das per union zusammenfasse bekomme ich doppelte IDs.

select COUNTRIES.CountryID as ID, ShortName + "" - "" + LongName as Name, RegionID as ParentID from COUNTRIES  
left join REGIONS_COUNTRIES on COUNTRIES.CountryID = REGIONS_COUNTRIES.CountryID  
union all  
select REGIONS.RegionID as ID, ShortName as Name, null as ParentID from REGIONS

Die resultierende ID-Spalte wird mit Country-IDs und Region-IDs gefüllt, das führt zur Überschneidung. Die Parent-Child-Zuordnung geht damit auch nicht mehr sauber.

Wie löst man das am besten? Oder sollte ich mich von der Idee einer allgemeinen Lösung für beliebig tiefe Bäume verabschieden und für jeden Fall eine Speziallösung bauen (z.B. mit Spalten für die Ebenen)?

Gruß,

Harlequin

--
RIP --- XHTML 2
nur die Besten sterben jung