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