Einrückungen entsprechend der Hierarchie

iCrystal

Benutzer
Beiträge
6
Hallo,

also ich befasse mich mal kurz, ich habe eine Aufgabe, bei der die Ausgabe entsprechend der Hierarchie eingerückt werden soll. Ich habe zwei Ansätze ausprobiert, hab es aber nicht hinbekommen, wie erwartet (noch Neuling in dem Geschäft :D). Meine Ansätze waren Strings im SELECT-Befehl einfügen und char(9) zu implementieren.

Es wäre wirklich sehr hilfreich, wenn mir jemand auf die Sprünge helfen kann. :)

Mein Code:
Code:
SELECT og.bez AS Verkaufsgebiet FROM Verkaufsgebiet vg
    JOIN verkaufsgebiet og ON og.vgid = vg.vgid
ORDER BY og.vgid;

Die Ausgabe (wie es sein soll) und die Tabelle ist im Anhang. :

Danke im Voraus.
 

Anhänge

  • ausgabe.JPG
    ausgabe.JPG
    40,8 KB · Aufrufe: 14
  • db.JPG
    db.JPG
    31,2 KB · Aufrufe: 10
Werbung:
man macht das üblicherweise mit rekursiven Abfragen. Dazu wird dann aber die Hirarchie nicht als Ebene gespeichert, sondern die Ebenen verlinkt. Dazu gibt es massig Beispiele im Netz.
 
Werbung:
Mal angenommen, Du hast mühevoll die Ebenen Information dieser Daten aus den Verweisen der Datensätze per SQL produziert bzw. bestimmt, dann könntest Du sie so verwenden:
Code:
select rpad('-',0,'-')||'Nord' from dual
union all
select rpad('-',1,'-')||'Nordost' from dual
union all
select rpad('-',2,'-')||'Mecklenburg..' from dual
union all
select rpad('-',1,'-')||'Nordwest' from dual

Das Problem ist, das Statement oben* kann man in der Praxis nicht einsetzen. Denn Deine Daten "funktionieren" nur, wenn sie genau in der Darstellung sortiert sind, wie in Deinem Bild. (Bilder sind übrigens schlecht zu gebrauchen in einem solchen Forum, Text ist viel hilfreicher) Datensätze sind aber per se nicht sortiert. Dafür bräuchte man separate Sortierinformationen. Ja, die VGID, später ..
Dein Bild sieht ehrlich gesagt wie ein Screenshot aus Excel aus. Ein DB funktioniert aber anders als ein Tabellenkalkulationsprogramm.

Falls Deine Daten in einer DB wären, würde jeder Datensatz einen Verweis auf seinen übergeordneten Datensatz enthalten, damit wäre man dann schon mal das Sortierungsproblem los.
Und dann ist man bei der vorigen Anwort von akretschmer angelangt.

Und die VGID würde es in einer Datenbank in der Form wahrscheinlich nicht geben. Wenn es eine ID wäre, würde der Wert nicht einem Muster folgen.
Wenn es eine Sortierinformation wäre-was es ja sein könnte-, würde man es nicht ID nennen.

Also Du müsstest jetzt überlegen, ob Du mit einem richtigen Datenmodell weitermachen möchtest oder ob es dringend ist und der Nagel nur noch ein Stück tiefer muss und dann krumm geschlagen werden soll.

*Das select statement im Beispiel erfüllt ganz unauffällig ein wichtiges Kriterium für die funktional gewünschte Darstellung der Einrückung. Es erzeugt durch seinen Aufbau implizit eine Sortierung. (Wobei, jetzt wo ich das schreibe, bin ich mir gar nicht mehr sicher, dass es wirklich garantiert ist...)
Wie auch immer, selbst wenn es das nicht wäre, würde es sehr anschaulich die Schwäche der Idee zeigen, auch wenn es schafft, Text einzurücken.
 
Zurück
Oben