[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2004
    Beiträge
    5

    Unhappy Hierarchische Abfrage DB2 / ODBC

    Hallo,

    mit dieser Abfrage möchte ich eine Baumstruktur auswerten.

    Tabelle = emaila01

    Spalten =

    evname enname
    AAA BBB
    AAA CCC
    AAA DDD
    CCC EEE
    DDD EEE
    DDD FFF
    FFF GGG

    sqlstring = "with temp (enname) as " _
    & "(select distinct evname " _
    & "from emaila01 " _
    & "where evname = 'AAA' " _
    & "union all " _
    & "select c.enname" _
    & "from emaila01 c, temp p " _
    & "where p.enname = c.evname) " _
    & "select distinct enname from temp"

    Jedoch bekomme ich die Fehlermeldung
    "Schlüsselwort UNION nicht erwartet"

    Vielen Dank im voraus für eine Antwort.

    Gruß

    Reinhard

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Im WITH ist kein Fullselect erlaubt, UNION scheidet daher aus.
    Die temporäre Tabelle ist wie eine VIEW zu sehen, in der (leider) auch kein UNION erlaubt ist.

    Ausserdem kann man innerhalb der temporären Tabelle nicht auf sich selbst verweisen !
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jul 2004
    Beiträge
    5
    Hallo,

    Danke für deine Antwort.

    Diese Idee hatte ich aus dem DB2 SQL-Cookbook
    von Graeme Birchall (Seite 213)

    http://ourworld.compuserve.com/homep...aeme_birchall/


    Gruß

    Reinhard

  4. #4
    Registriert seit
    Jul 2004
    Beiträge
    5

    Hierarchische Abfrage DB2/AS400 Sql/ODBC

    Hallo nochmals,

    gibt des denn keine andere Funktion für die DB2/AS400.

    Wie z.B. für Oracle mit "connect by prior / start with"


    Vielen Dank im voraus für eine Antwort.

    Gruß

    Reinhard

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Unter folgender Adresse findest du alles, was DB2/400 kann oder auch nicht kann:
    http://publib.boulder.ibm.com/iserie...f/rzahfms1.htm

    Aber deinen Select muss man nicht unbedingt verstehen ?!?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jul 2004
    Beiträge
    5

    Hierachische Abfrage für Oracle

    Hallo Fuerchau,

    Hier nochmal ein Beispiel wie so etwas auf Oracle
    ausgeführt wird.

    select parent from tabelle
    connect by child = prior parent
    start with child = 104
    Union
    select child from tabelle
    connect by prior child = parent
    start with parent=104;


    Gruß

    Reinhard

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Oracle hilft mir da nicht so viel da ich Oracle nicht kenne.
    DB2/400 nutzt SQL99.

    Was bedeutet denn "connect by " oder "start with " ?
    Kann man das nicht ganz normal als Join auflösen ?

    select parent, child
    from tabelle p
    join tabelle c on p.parent = c.child
    where parent = 104
    union
    select child, parent
    from tabelle c
    join tabelle p on c.child = p.parent
    where child = 104
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Jul 2004
    Beiträge
    5
    Hallo Fuerchau,

    hier die Antwort auf deine Frage.

    Den Baum durchwandern
    Die Richtung der Abfrage, sei es vom Vater zu Kind oder Kind zu Vater wird durch die
    Position der Spalte CONNECT BY PRIOR bestimmt. Der Operator bezieht sich auf die
    Vater-Zeile. Um Kinder einer Vater-Zeile zu finden, wertet der Oracle-Server den Ausdruck
    PRIOR für die Vater-Zeile und die anderen Ausdrücke für jede Zeile in der Tabelle aus.
    Zeilen, für die die Bedingung auf TRUE lautet, sind Kinder des Vaters.
    Der Oracle-Server wählt Kinder immer durch Auswertung der Bedingung CONNECT BY
    In Bezug auf eine aktuelle Vater-Zeile aus.
    START WITH Spezifiziert die Bedingung, die erfüllt werden muß.

    Quelle Oracle Education (Knowlege.Performance.Success)


    Gruß

    Reinhard

Similar Threads

  1. Problem mit DB2 Connect
    By Ewald in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 24-01-07, 18:32
  2. Access -> ODBC-> DB2
    By bluesXplosion in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 03-08-06, 09:52
  3. Performanceprobleme mit Access <--> DB2 per ODBC
    By Rico in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 03-05-05, 17:16
  4. ODBC Zugriff auf DB2 mit VBA
    By Bärnd in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-05-02, 15:58
  5. MS Access SQL Abfrage über ODBC
    By Helwo in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 19-03-02, 09:01

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •