-
Sorry, aber mit der Formulierung habe ich mir schwer getan.
J
a ich muss mit der Nummer die ich ermittelt haben wieder weitermachen.
Schuss ist sobald die B1NR02 0 ist.
Der Primary-Key der Datei ist B1NR01
Code:
B1NR01 B1NR02
25000 24800
24800 24795
24795 0
-
Danke vielmals,
Connect By Prior scheint die Lösung zu sein.
Werde mal sehen wie performant das ist.
lg
-
Da benötigst du doch wieder einen Cursor und musst alle Sätze bis zum letzten lesen.
Oder du packst das dann in eine derived table:
select * from (
select .... connect by ....
) hugo
where B1NR02 = 0
da du ja nur den letzten benötigst.
Gelesen werden muss aber trotzdem alles und ist eben ein eher schlechtes Datenmodell.
-
 Zitat von Fuerchau
Da benötigst du doch wieder einen Cursor und musst alle Sätze bis zum letzten lesen.
Braucht er nicht!
Wenn er die Lösung so nimmt wie angegeben, benötigt er lediglich einen SELECT ... INTO, da in dem Beispiel der letzte Satz ausgegeben wird.
-
Welches Beispiel?
Soweit ich das sehe liefert der Connect doch alle Sätze der Verbindung.
-
Hallo Birgitta,
ich habe das Sqlstatement abgesetzt:
Code:
Select *
From BESTELLP
Start With B1BNR02 = 7635561
Connect By Prior B1BNR01 = B1BNR02
Order By Level Desc
Fetch First Row Only
Datum B1NR01 B1NR02
1 20161123 7495368 0
2 20161125 7575144 7495368
3 20161129 7575810 7575144
4 20161130 7635561 7575810
5 20161130 7635567 7635561
Zurückgeliefert bekomme ich den Satz:
Code:
5 20161130 7635567 7635561
Ich hätte aber gerne den 1. Satz wo die B1NR02 = 0
Code:
1 20161123 7495368 0
Ich habe gewisse Sachen mit dem Level und MIN(B1BNR01) probiert, aber ich bekomme immer den 5.Satz(letzten) angezeigt.
-
Pack das Ganze in eine Klammer:
select * from (
Select *
From BESTELLP
Start With B1BNR02 = 7635561
Connect By Prior B1BNR01 = B1BNR02
) Hugo
where BINR02 = 0
oder
Select *
From BESTELLP
Start With B1BNR02 = 7635561
Connect By Prior B1BNR01 = B1BNR02
Order By BINR02
Fetch First Row Only
-
Hallo,
ich habe alle Varianten ausprobiert, bekomme aber immer den letzten Satz geliefert.
-
Ich hab hier was Cooles gefunden: Rekursives SQL
Scheint ab V5R4 zu gehen ...
PHP-Code:
WITH ABCDE (B1NR01,DATUM,B1NR02) AS (
SELECT B1NR01,DATUM,B1NR02 FROM BESTELLP WHERE B1NR01=7635561
UNION ALL
SELECT A.B1NR01,A.DATUM,A.B1NR02 FROM BESTELLP A
INNER JOIN ABCDE B ON A.B1NR01=B.B1NR02)
SELECT * FROM ABCDE WHERE B1NR02=0
-
Dies nennt sich rekursive CTE, was durch Connect By vereinfacht werden sollte.
Ich habe leider keine vergleichbaren Daten um dieses selber zu testen.
Warum die beiden letzten Varianten nicht funktionieren sollen, entzieht sich mir.
Immerhin liefert doch
Select *
From BESTELLP
Start With B1BNR02 = 7635561
Connect By Prior B1BNR01 = B1BNR02
eine Ergebnistabelle.
Warum sollten obige 2 Varianten also immer den letzten Satz liefern?
Mach doch mal schrittweise folgendes:
select * from (
Select *
From BESTELLP
Start With B1BNR02 = 7635561
Connect By Prior B1BNR01 = B1BNR02
) hugo
order by B1NR02
Wenn du dass dann mit "fetch first 1 rows only" oder "where B1NR02 = 0" ergänzt sollte das gewünschte Ergebnis doch eigentlich kommen.
-
Das rekursive CTE von Pikachu liefert das gewünscht Ergebnis(echt Cool!).
@ Fürchau: Ich habe das Statement schrittweise auseinander genommen, aber das Ergebnis war immer der letzte Satz. ehrlich
-
Dann wäre das ein meldenswerter Fehler an IBM, denn
select * from (
Select *
From BESTELLP
Start With B1BNR02 = 7635561
Connect By Prior B1BNR01 = B1BNR02
) hugo
where B1NR02 = 0
hätte dann gar keine Daten liefern dürfen.
Also irgendwas ist da faul...
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