1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

"Ordnerartige" Struktur in SELECT Ausgabe

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ukulele, 9 März 2011.

  1. ukulele

    ukulele Datenbank-Guru

    Ich versuche in einer Tabelle, die in der Anwendungen auch nur als solche ausgegeben wird, mit Hilfe einer zusätzlichen Bezeichnung soetwas wie eine Ordnerstruktur abzubilden.

    Die Tabelle hat einen Primärschlüssel und einen Fremdschlüssel der bei einem vorhandenen Vorgänger auf den Primär Schlüssel verweisst.Per Trigger bekommt jeder Eintrag das passende "Level" also die Nummer der Ebene mit. Außerdem habe ich eine Bezeichnung und eine modifizierte Bezeichnung, in der der eigentliche Bezeichnungstext eingerückt wird, sobald es sich um einen Eintrag mit Vorgänger handelt. Hier mal ein paar Beispieldaten:

    PK | FK | Bezeichnung | mBezeichnung | Level
    1 | NULL | asdf | asdf | 0
    2 | 1 | qwert | * qwert | 1
    3 | 2 | wtf | ** wtf | 2
    4 | 3 | qwe | *** qwe | 3
    5 | 1 | 1234 | * 1234 | 1

    Und so soll es dann auch sortiert sein, aplhabetisch nach Bezeichnung und wenn es zu der Bezeichnung Folgeeinträge gibt, diese entsprechend darunter. Natürlich können viel mehr Ebenen entstehen oder es sind halt mal keine Nachfolger vorhanden.

    Natürlich habe ich schon überlegt eine Sortierungsspalte zu befüllen, ist aber auch nicht so einfach. Für Ideen bin ich dankbar.
     
  2. Charly

    Charly Datenbank-Guru

  3. ukulele

    ukulele Datenbank-Guru

    Das hört sich sehr genau nach dem an was ich Suche, ist aber auch harter Stoff. Das meiste habe ich seit gestern schon selbst geschrieben aber so kann ich mir auch einiges sparen. Danke schonmal vorab.
     
  4. ukulele

    ukulele Datenbank-Guru

    Habe damit einiges expirimentiert und konnte es leider nicht sinnvoll mit HierachyID umsetzen. Lag zum einen daran, das die angebotenen Funktionen a) nicht immer funktionierten, ich glaube, da muss man was in SQL aktivieren und b) ich diese Funktionen als nicht so hilfreich empfand wie erhofft. Zum Anderen kam meine ANwendung mit sowas überhaupt nicht kar :)

    Eine Sache in dem Artikel hat mich aber gut voran gebracht. Habe mir dort ein SELECT umgeschrieben und als Sicht abgelegt, das den Pfad generiert. Der wird dann per Trigger aus der Sicht geholt, neben jede Menege anderen Arbeitsschritten. Hier mal die Sicht die den Pfad ermittelt (Auszug aus dem Artikel):

    Code:
    with c as (
      select '/'+cast(billID as varchar(49)) as path,BillID
      from dbo.bill b
      where b.parentBillID is null
        union all
      select cast(c.path+'/'+CAST(b.billID as varchar(4)) as varchar(50)),    b.billID
      from dbo.bill b join c on b.parentBillID = c.billID)
    select c.path+'/',b.descr
    from c join dbo.bill b on c.billID = b.billID
    order by 1;
     
Die Seite wird geladen...

Diese Seite empfehlen