-
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
-
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 !
-
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
-
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
-
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 ?!?
-
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
-
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
-
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
-
By Ewald in forum NEWSboard Programmierung
Antworten: 0
Letzter Beitrag: 24-01-07, 18:32
-
By bluesXplosion in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 03-08-06, 09:52
-
By Rico in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 03-05-05, 17:16
-
By Bärnd in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 29-05-02, 15:58
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks