-
subselect ohne Ergebnis
Hallo alle,
es gibt Problem mit einem Subselect.
Aufgabenstellung ist folgende:
Tabelle-1: Auftragspositionen mit den Feldern Auftragsmenge und bereits gelieferte Menge.
Tabelle-2: für die Auftragsposition gefertigte Teile.
Frage ist was noch zu produzieren ist.
Auftragsmenge - Liefermenge - Fertigung
In Tabelle-2 können Sätze von Null bis n vorhanden sein.
Ist nun kein Satz vorhanden bringt der Subselect einen Fehler und damit Abbruch. Rechnen sollte er aber
Auftragsmenge - Liefermenge - NULL
ExecSQL
declare AUFGEScursor cursorfor
select BDESS, BFB,
sum( BBEAB - BFAME
-(selectsum(casewhen STSTAT=1 then STAGME else STNEME end)
from FESTCKS1
where STBELE=AUFGES.BBELE and STPOSI=AUFGES.BPOSI
and STSTAT < 5))
from AUFGES
where BTEIL <> 'E'and (BSCHK, BKETG) in
(select KT3SHK, KT3REZ from KETTGA3 where KT3GAC=:Garnstring)
or BTEIL <> 'E'and (BDESS, BFB) in
(select SGDESS, SGFB from MASCHUS1 where SGGARN=:Garnnummer)
groupby BDESS, BFB
orderby BDESS, BFB ;
ExecSQL
open AUFGEScursor ;
Resteinplanung = *Zero ;
Dou sqlAUFGES <> *Zero ;
ExecSQL
fetchnextfrom AUFGEScursor into :BDESS, :BFB, :BBEAB ;
Die Whereklausel behandelt die Suche nach einer bestimmten Materialkomponente.
Danke für eure Hilfe.
-
Mit NULL läßt sich nicht rechnen.
Wird NULL in einer Berechnung verwendet, ist das Ergebnis auch immer NULL.
Wenn du ohne Satzanzeiger für NULL-Werte arbeitest, kannst du das nicht auswerten.
Ansonten mußt du folgendes verwenden:
coalesce((subselect ...), 0)
Coalesce liefert den ersten Wert, der nicht NULL ist.
-
tiefe Verneigung
Das war´s.
Und sooooo einfach.
Die ganze Literatur ersetzt nicht die Möglichkeit eine Frage zu stellen.
Eine hab ich noch!
Soll generell DISTINCT bei subselects für die IN-Klausel verwendet werden?
-
Hallo,
frei nach Theorie ist das Banane, weil SQL nach dem Kohl Prinzip arbeitet, aber ein Index für den Subselect sollte ohnehin da sein und dann kanns eher nutzen als schaden.
mfg
Dieter Bender
 Zitat von Armin
Das war´s.
Und sooooo einfach.
Die ganze Literatur ersetzt nicht die Möglichkeit eine Frage zu stellen.
Eine hab ich noch!
Soll generell DISTINCT bei subselects für die IN-Klausel verwendet werden?
-
DISTINCT zwingt immer dazu ALLE Sätze zu verarbeiten und dann doppelte rauszuschmeissen.
Ohne DISTINCT entfällt das entfernen.
Aber wer weiß, vielleicht merkt der Optimzer das sogar, weil für die IN-Prüfung ist das Zwischenergebnis egal.
Was hier ggf. beschleunigen kann ist eher EXISTS, da hier bereits 1 Vorkommen ausreicht und nicht alle Sätze benötigt werden.
Aber insofern hat Dieter (wie immer) Recht, dass Zugriffspfade wesentlich bedeutender sind.
Insbesonders bei mandantenfähiger Software wird der Mandant gerne vergessen, da man ja nur einen hat
-
Hallo,
manchmal lässt sich der exists oder where in durch einen join ersetzen und dann bleibt dem Optimizer fast kein Spielraum mehr Quatsch zu machen (selbst bei der ach so fantastischen neuen Query engine)
mfg
Dieter Bender
 Zitat von Fuerchau
DISTINCT zwingt immer dazu ALLE Sätze zu verarbeiten und dann doppelte rauszuschmeissen.
Ohne DISTINCT entfällt das entfernen.
Aber wer weiß, vielleicht merkt der Optimzer das sogar, weil für die IN-Prüfung ist das Zwischenergebnis egal.
Was hier ggf. beschleunigen kann ist eher EXISTS, da hier bereits 1 Vorkommen ausreicht und nicht alle Sätze benötigt werden.
Aber insofern hat Dieter (wie immer) Recht, dass Zugriffspfade wesentlich bedeutender sind.
Insbesonders bei mandantenfähiger Software wird der Mandant gerne vergessen, da man ja nur einen hat 
Similar Threads
-
By deni87991 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 19-10-06, 13:55
-
By Flo4711 in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 29-09-06, 17:31
-
By lyrics in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-08-06, 12:10
-
By SUBUIS in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 09-05-06, 09:36
-
By danloc in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 17-12-04, 11:24
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