Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#1

[MySQL] Stored Function für Zusammenstellung - wie?

  Alt 1. Apr 2006, 00:58
Datenbank: MySQL • Version: 4.1 • Zugriff über: Kommandozeile (mysql.exe)
Hallo.

Ich möchte mir mit einer Stored Function alle Blätter eines Knotens in einem Baum heraussuchen lassen. Ich habe vorher noch keine Stored Functions bzw. Procedures gebraucht. Die Dokumentation u.a. auf MySQL.com bringt mich nicht weiter.

Das habe ich schon:
SQL-Code:
CREATE FUNCTION GetLeaves(ParentNodeID INT) RETURNS ???
BEGIN
   DECLARE Result ??? DEFAULT ???; --Wie die leere Menge als Standardwert angeben?
   DECLARE Datasets ??? DEFAULT ???;

   -- So findet man Kindknoten eines Knotens:
   SELECT ID FROM Nodes WHERE ParentID=ParentNodeID;

   -- Hier müsste jetzt über das eben ermittelte Ergebnis iteriert werden, um von diesen Knoten wiederum die Kindknoten zu finden... Also irgendwie so:
   WHILE ... DO
      -- den aktuellen Knoten zu Result hinzufügen
      SET Result = Result und aktueller Knoten;

      -- die Kindknoten des aktuellen Knotens ermitteln
      SET Datasets = CALL GetLeaves(...);

      -- und zu Result hinzufügen...
      SET Result = Result und Datasets;
   END WHILE;

   -- und noch das Ergebnis zurückgeben
   RETURN Result;
END
Die Tabelle Nodes sieht wie folgt aus:
SQL-Code:
+----+----------+
| ID | ParentID |
+----+----------+
| 1 | 0 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 4 |
| 6 | 3 |
| . | . |
| . | . |
| . | . |
+----+----------+
Wie müssen die Stored Functions aussehen, damit ich (1) alle Unterknoten zum angegebenen Knoten aufgelistet bekomme und (2) nur die Blätter zum angegebenen Knoten aufgelistet bekomme?

Ich bin für jede Hilfe dankbar,
Panthrax.
  Mit Zitat antworten Zitat