AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Hierarchische Daten speichern und abrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Hierarchische Daten speichern und abrufen

Ein Thema von EarlyBird · begonnen am 4. Feb 2011 · letzter Beitrag vom 6. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#1

Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 19:12
Datenbank: SQL • Version: - • Zugriff über: -
Hallo,
wie speicher ich am besten hierarchische Daten?
z.B. für einen Stammbaum.
Mir geht es nicht um das Datenbanksystem sondern wie ich die Struktur am besten aufbaue.
Wie speicher ich die Daten so das ich von jedem Datensatz alle "Child" und "Parent" Datensätze abrufen kann.
Ich hoffe es versteht jemand wie ich es meine.

Gruß
EarlyBird
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 19:18
Hast Du mal XML (statt SQL) in Erwägung gezogen?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#3

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 19:31
Kommt leider nicht in Frage.
Zu den Daten kommen noch ein paar mehr Tabellen und Daten hinzu.
So das ich es insgesamt gesehen besser mit einer Datenbank lösen kann.
Aber Danke für die Anregung.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 19:46
Im Grunde brauchst du nur das Elternelement speichern.

Willst du dann die Kinder wissen, mache eine Abfrage wie:
Code:
SELECT * FROM nodes WHERE (parent == ?)
Wobei du ? durch die ID des Knoten ersetzt, dessen Kinder du wissen willst.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG ( 4. Feb 2011 um 19:50 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 20:13
Hallo,

im grunde sieht die Tabelle dafür so aus

Code:
CREATE TABLE Tree
(ID INteger,
NodeName Char(),
Parent_ID INTEGER);
wenn DU dann noch ne StoredProcedure machen kannst, dann kannst Du die Daten rekursiv ermitteln. ich glaube Holger Klemt hat dazu mal was im Entwickler geschrieben...

Grüße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 20:30
Hier würde sich auch eine CTE ( Common Table Expression) anbieten
Markus Kinzler
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#7

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 21:10
Erstmal Danke für die Antworten.

CTE sagt mir jetzt leider nichts.
Werde mich mal mit Google schlau machen.

Im Grund ist mir die Tabellen-Struktur schon klar.
Nur bin ich mir über die Abfrage der Daten noch nicht im klaren.
Ich hatte gehofft das es mit einer bestimmten Tabellen-Struktur einfacher zu lösen ist.

Der beste Weg ist also die Daten über eine StoredProcedure rekursiv Abzufragen?
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#8

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 21:22
das habe ich gerade zu CTE gefunden:
http://msdn.microsoft.com/de-de/library/ms186243.aspx
Scheint ziemlich genau das zu sein was ich suche.
Jetzt muss ich es nur noch genau verstehen und umsetzen.
Danke für Eure vorzügliche schnelle Hilfe
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#9

AW: Hierarchische Daten speichern und abrufen

  Alt 4. Feb 2011, 22:18
Ich schon wieder.
Für alle die etwas ähnliches suche:
Ich habe die Abfrage aus http://msdn.microsoft.com/de-de/library/ms186243.aspx
mal ein bisschen vereinfacht.

Delphi-Quellcode:
USE yourDatenbank;
GO
WITH Organigramm (Chef, Mitarbeiter, Title, Level)
AS
(
-- Anchor member definition
      SELECT e.Chef, e.Mitarbeiter, e.Title, 0 AS Level
    FROM dbo.myMitarbeiter AS e
    WHERE e.Chef IS NULL
    UNION ALL
 -- Recursive member definition
    SELECT e.Chef, e.Mitarbeiter, e.Title, Level + 1
    FROM dbo.myMitarbeiter AS e
    INNER JOIN Organigramm AS d
        ON e.Chef = d.Mitarbeiter
)
-- Statement that executes the CTE
SELECT Chef, Mitarbeiter, Title, Level
FROM Organigramm order BY Level, Chef;
GO
So scheint es zu funktionieren.

Der Tip mit CTE war goldrichtig besten Dank noch mal dafür.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Hierarchische Daten speichern und abrufen

  Alt 5. Feb 2011, 18:34
Hallo,

die DB war für Dich ja sekundär. Hier eine schöne Möglichkeit mit Oracle:

CONNECT BY PRIOR
Beschreibt die Beziehung zwischen Eltern und Kind Datensätzen einer Hierarchie

Code:
CONNECT BY <child_value> = <parent_value>
Beispiel:
Code:
conn hr/hr

SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY PRIOR employee_id = manager_id;
oder

Code:
SELECT last_name, employee_id, manager_id, LEVEL
FROM employees
START WITH employee_id = 101
CONNECT BY PRIOR employee_id = manager_id;
Wenn Du die Hierarchieebenen kennst und die Liste richtig sortiert ist, kommst Du allerdings ohne solche Dinge aus, wenn Du bspw. einen Treeview befüllen willst.
Stored Procedures, das Oracle Beispiel oben oder auch das Beispiel von MS benötigt man vor allem wenn man einen "Ast" oder Ausschnitt benötigt.

Hier ein paar mehr Infos zu
connect by
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz