Rekursives SQL-Statement

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • thabaker
    antwortet
    thx!

    dann lese ich mir mal das "neested" durch...

    Ich habe mir als Alternative das "UNION" Statement rausgesucht. Gibts da Performanceprobleme wenn man viele (>5) SELECTs miteinander verbindet? Kann ich das Ergebnsi der UNION Abfrage mit LIMIT begrenzen?

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    sorry,
    nachdem es jetzt fett riech ich den braten auch

    für die "nested sets" kannst du auch hier mal in den tuts
    nachschaue, berni hat da was verfasst.

    Einen Kommentar schreiben:


  • thabaker
    antwortet
    @wurzel: Ich habe im obigen Post noch hingeschreiben, aus welchen Tabellen die Beispieldaten kommen (einmal aus der Artikelgruppen-Tabelle, einmal aus der Artikeltabelle, d.h. SCHITZEL ist die Gruppe SCHNITZEL!)
    Ausserdem können die Artikelgrouppen beliebig geschachtelt werden, es ist nicht auf 2 oder 3 ebenene festgelegt!

    |Krusenbaum: werde ich mal lesen, aber ich kenne mich noch nicht so gut aus...

    Einen Kommentar schreiben:


  • Krusenbaum
    antwortet
    Ich glaub was du suchst ist eine rekursive query, die dir alle Unterkategorien auf einmal ausliest. Dazu gibt es verschiedene Ansätze. Ein sehr beliebter Ansatz ist das Nested-Tree Prinzip.

    Querying XML Data Based on Nested Relational Sequence Model

    http://www.codebits.com/ntm/

    http://www.google.de/search?hl=de&ie...le-Suche&meta=

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    PHP-Code:
    $sql "select * from articlegroups where idx='$idx' or parentgroup='$idx' order by idx, groupname limit 0,10"
    ist es das, was dir vorschwebt ? Ich weiss zwar nicht, wo "SCHWEINESCNITZEL (ARTICLEGROUP = 4)"
    nu herkommen (selbe tabelle ??) aber wenn keine 2. existiert sollte das obige statement klappen.

    mahlzeit wurzel

    Einen Kommentar schreiben:


  • thabaker
    antwortet
    Das mit JOIN verstehe ich noch nicht ganz,
    aber kann mir UNION weiterhelfen? Kann mir da jemand bitte ein Beispiel zeigen?

    DANKE!!

    Einen Kommentar schreiben:


  • thabaker
    antwortet
    also hier mal die Tabellenstruktur:

    Table "articlegroups":
    -idx (INT)
    -groupname (VARCHAR)
    -parentgroup (INT)

    "parentgroup" zeigt wieder auf einen Eintrag in dieser Tabelle und steht für die übergeordnetet Gruppe.
    BSP: Artikelgruppen Tabelle
    Code:
    -ESSEN (IDX = 1; PARENTGROUP = 0)
       +NUDELN (IDX = 2; PARENTGROUP = 1)
       +FLEISCH (IDX = 3; PARENTGROUP = 1)
          +SCHNITZEL (IDX = 4; PARENTGROUP = 3)
    -TRINKEN (IDX = 5; PRENTGROUP = 0)
    Jeder Artikel hat das Feld "articlegroup", das seine Gruppe speichert.
    Das Prblem liegt nun darin z.B. alle Artikel unterhalb von z.B. "FLEISCH" angezeigt werden sollen. Beipielartikel:
    Artikeltabelle
    -BRATEN (ARTICLEGROUP = 3)
    -GUOLASCH (ARTIKLEGROUP = 3)
    -SCHWEINESCNITZEL (ARTICLEGROUP = 4)
    -SCHNITZEL VOM RIND (ARTICLEGROUP = 4)

    Jetzt will ich wenn die Artikelgruppe FLEISCH ausgewählt wird, ALLE Arikel von der Gruppe FLEISCH, aber auch alle Artikel unterhalb dieses Knotens anzeigen!
    Zuletzt geändert von thabaker; 25.02.2003, 13:39.

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    hi,

    entweder suchst du mal nach "join" oder postest deine tabellenstrukturen.

    gruss wurzel

    Einen Kommentar schreiben:


  • thabaker
    antwortet
    Noch was: Gut wäre am Ende eine Liste die man mit LIMIT beschränken könnte....

    ein Vorschlag von mir:
    -Verschiedene SQL-Statements benutzen und die Ergebnisse in einer temporären Tabelle abspeichern. Nachteil: Neue Tabelle muss mit eindeutigem Namen erzeugt werden, bei vielen Abfragen Performance-Einbussen?!

    Einen Kommentar schreiben:


  • thabaker
    hat ein Thema erstellt Rekursives SQL-Statement.

    Rekursives SQL-Statement

    Hi Leute!

    ich habe folgendes Problem:
    Ich möchte Artikel einer bestimmten Artikelgruppe anzeigen und zusätzlich alle Artikel von den untergeordneten Artikelgruppen.
    Das erste ist kein Problem, einfach ein WHERE ...=... dranhängen.
    Wie schaffe ich das aber die anderen Artikel, die ja eine WHERE Bedingung haben die erst im Statement abgefragt wird, in das selbe Result einzufügen (per SQL oder PHP, das ist egal).
    D.h. ich will am Ende in der PHP-MySQL-ResultID ALLE Artikel unterhalb einer Artikelgruppe haben! (die Artikel speichern nur ihrer direkte Gruppe, nicht die übergeordneten Gruppen).

    Vielen Dank im voraus!
    ThaBaker
Lädt...
X