-
Wenn Du schon beim START WITH die Felder (aus meinem Beispiel) austauschst, musst Du dies auch beim CONNECT BY machen bzw. den PRIOR for das andere Feld setzen.
Das folgende Statement sollte das richtige Ergebnis liefern.
Code:
Select *
From YOURTABLE
Start With B1BNR02 = 7635561
Connect By Prior B1BNR02 = B1BNR01
Order By Level Desc
Fetch First Row Only
Mit einer RCTE geht das natürlich auch (seit Release V5R4) ist jedoch komplizierter und weniger einfach zu verstehen.
Birgitta
-
Nochmal zum Verständnis:
In Deiner Bestell-Datei sind für B1BNR01 mehrere gleiche Werte. In B1BNR02 sind für den gleichen B1BNR01-Schlüssel-Wert mehrere verschiedene Werte und u.a. ist auch mindestens 1x der Wert 0 zu finden (kein NULL-Wert?!).
Du versuchst für einen bestimmten Schlüssel den Satz mit der 0 zu finden?
Sofern es das ist, das Du das willst, kann es mit SQL ganz einfach gelöst werden (da braucht man auch kein verschachteltes Sub-Select)
Code:
Select Fld1, Fld2, ... FldN
From YourTable
Where B1BNR01 = 'YOURVALUE' and B1BNR02 = 0;
Mir ist übrigens auch schleierhaft, warum Du deinen Key nicht einfach um ein zweites Schlüssel-Feld erweiters (bzw. eine LF oder besser einen SQL Index anlegst mit 2 Schlüssel-Feldern. Dann könntest Du den Satz auch mit native I/O direkt greifen.
Solltest Du stattdessen tatsächlich eine Rekursion wollen, d.h. mit dem in B1BNR02 gefundenen Wert muss ein Zugriff auf B1BNR02 erfolgen und der letzte Wert in B1BNR02 ermittelt werden, könnte die Abfrage evtl. wie folgt aussehen (Mindest-Release 7.1)
Code:
Select *
From YOURTABLE
Start With B1BNR01 = 'YOURVALUE'
Connect By Prior B1BNR01 = B1BNR02
Order By Level Desc
Fetch First Row Only;
Birgitta
-
So wie es aussieht könnte es sich um eine "verkettete Liste" handeln.
D.h., das Feld B1NR02 verweist "rekursiv" auf sich selbst, bis der letzte Satz keinen weiteren Verweis mehr hat, z.B.:
1 => 5 => 12 => 0
2 => 3 => 7 => 11 => 0
17 => 4 => 6 => 35 => 0
Dies ist mit einer SQL-Methode hier tatsächlich nicht zu lösen sondern ebenso mittels einzelner "Select into " zu lösen. Ein Cursor ist nicht erforderlich.
Allerdings solltest du dir hier tatsächlich ein anderes Model entwickeln, denn solche Strukturen sind SQL-technisch nicht vernünftig und schon gar nicht performant auswertbar.
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