Ergebnis 1 bis 10 von 10

Thema: CTE problem

  1. #1
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard CTE problem

    halloechen ..

    es geht um CTE .. mir ist das noch recht neu, weil ich es bisher eher vermieden habe - aber nun will ich sie für "kleine baeume" verwenden.

    d.h. tabellen mit eher kleinen datenmengen, die baumstrukturen abbilden - wie man das i.d.R. tut über sowas wie eine referenz id_parent.

    mein spezielles problem ist nun, mittels CTE eine query zu konstruieren, die als ergebnismenge 1. eine ebene des baumes (z.B. root) beinhaltet, welche 2. nur sätze enthalten für die irgendwo unterhalb dieser ebene ein suchbegriff/-kriterium erfüllt ist.

    oder anders: ich moechte alle sätze die als id_parent = X haben (ebene) und die wiederum direkte oder indirekte kinder existieren (belibige tiefe darunter) für die ein anderes kriterium (z.B. suchbegriff) zutrifft.

    also das prinzip CTE habe ich verstanden - nur irgendwie ist mein hirn gerade ziemlich blockiert . wie bilde ich sowas ab?

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    halloechen ..

    es geht um CTE .. mir ist das noch recht neu, weil ich es bisher eher vermieden habe - aber nun will ich sie für "kleine baeume" verwenden.

    d.h. tabellen mit eher kleinen datenmengen, die baumstrukturen abbilden - wie man das i.d.R. tut über sowas wie eine referenz id_parent.

    mein spezielles problem ist nun, mittels CTE eine query zu konstruieren, die als ergebnismenge 1. eine ebene des baumes (z.B. root) beinhaltet, welche 2. nur sätze enthalten für die irgendwo unterhalb dieser ebene ein suchbegriff/-kriterium erfüllt ist.

    oder anders: ich moechte alle sätze die als id_parent = X haben (ebene) und die wiederum direkte oder indirekte kinder existieren (belibige tiefe darunter) für die ein anderes kriterium (z.B. suchbegriff) zutrifft.

    also das prinzip CTE habe ich verstanden - nur irgendwie ist mein hirn gerade ziemlich blockiert . wie bilde ich sowas ab?
    my blog: waiting for 8.4


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Cool ... das war der richtige Anstoß .. ich war der Sackgasse verfallen, das Problem als "Kinder" zu betrachten .. ick such ja "Parents" .. nu wirds mir klar.

    Also Danke ...

    Jetzt muss ich mir nur noch ueberlegen wie ich CTE in mein Query-Abstraction Layer einbaue

  4. #4
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard CTE gefällt mir

    ich hoffe das ist ausreichend flott um so untermengen zu erzeugen ..

    was mir auffaellt - man kann immer nur eine CT erzeugen?

    also ein konstrukt wie

    with ct1 as ()
    with ct2 as ()
    select ... from ct1, ct2 ...

    is nich moeglich?

  5. #5
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    ich hoffe das ist ausreichend flott um so untermengen zu erzeugen ..

    was mir auffaellt - man kann immer nur eine CT erzeugen?

    also ein konstrukt wie

    with ct1 as ()
    with ct2 as ()
    select ... from ct1, ct2 ...

    is nich moeglich?
    nie probiert, ist auch für mich Neuland.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    nie probiert, ist auch für mich Neuland.

    Andreas
    Code:
    test=# with recursive foo as (select 0 as a, 1 as b union all select a+1, b+1 from foo where a < 4),  bla as (select 0 as c, 1 as d union all select c+1, d+1 from bla where c < 3) select foo.*, bla.* from foo, bla;
     a | b | c | d
    ---+---+---+---
     0 | 1 | 0 | 1
     0 | 1 | 1 | 2
     0 | 1 | 2 | 3
     0 | 1 | 3 | 4
     1 | 2 | 0 | 1
     1 | 2 | 1 | 2
     1 | 2 | 2 | 3
     1 | 2 | 3 | 4
     2 | 3 | 0 | 1
     2 | 3 | 1 | 2
     2 | 3 | 2 | 3
     2 | 3 | 3 | 4
     3 | 4 | 0 | 1
     3 | 4 | 1 | 2
     3 | 4 | 2 | 3
     3 | 4 | 3 | 4
     4 | 5 | 0 | 1
     4 | 5 | 1 | 2
     4 | 5 | 2 | 3
     4 | 5 | 3 | 4
    (20 rows)
    geht also.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    [code]

    geht also.

    Andreas
    schoen ... ich hatte das auch probiert - aber ohne diese kommas - da kam dann halt nen syntax-fehler .. wo in der doku hast du denn geschaut? oder bist allein auf den trichter gekommen?

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von symbiont Beitrag anzeigen
    schoen ... ich hatte das auch probiert - aber ohne diese kommas - da kam dann halt nen syntax-fehler .. wo in der doku hast du denn geschaut? oder bist allein auf den trichter gekommen?
    Ja.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Ja.

    Andreas
    manchmal möcht ich dich verprügeln

    übrigends - flott zu funktionieren scheint es tatsaechlich - habs mal auf eine "reichhaltigere" tabellenstruktur angewendet - ich bin mit der performance sehr zufrieden.

    bleibt die frage wann 8.4 released wird

  10. #10
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard FEHLER: mutual recursion between WITH items is not implemented

    schade ...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum