-
Not Exist
Hallo,
Kann mir bitte jemand erklären, warum er mir das Sql nicht akzeptiert?
Habe mir ein Tempfile aufgebaut und will eigentlich wissen welche Sätze eigentlich ausgeschlossen worden sind.
SELECT A1FIR, A1ABT A1FILE WHERE NOT EXIST
(SELECT FIR, ABT FROM
TEMP$FILE, A1FILE WHERE A1FIR= FIR AND A1ABT = ABT)
Dank im Voraus
Gruß Tarki
-
Hallo Tarki,
bitte eine etwas genauere Fehlermeldung vom System.
Ich tippe darauf, dass du lieber Alias-Namen für die Tabellen verwenden solltest, da das System nicht weis ob du bei der Spalte A1FIR von der Tabelle aus dem Haupt-Select oder dem Sub-Select verwenden willst.
Außerdem fehlt dir der FROM-Teil im Haupselect!
Code:
SELECT t1.A1FIR, t1.A1ABT FROM A1FILE T1 WHERE NOT EXIST
(SELECT FIR, ABT FROM
TEMP$FILE, A1FILE T2 WHERE t2.A1FIR= FIR AND t2.A1ABT = ABT)
-
als Ergänzung zum Beitrag über mir:
du hast das 'S' am EXISTS vergessen
mfg
Klaus
-
Hallo Andreas,
Sql-Statement wird nun nicht mehr angemeckert, aber ich bekomme keine Sätze zurück obwohl jede Menge da vorhanden sein müssten.
Im subselect wähle ich die alle gleichen Sätze aus und mit der Anweisung not Exists müsste ich eigentlich die ausgeschlossenen sehen oder?
Gruß
-
Du hast keine Referenz zur Haupttabelle gegeben:
select ...
from myfile a
where not exists (select * from fileb b where a.key=b.key)
Die Feldliste im Subselect wird dabei ignoriert.
-
Danke Herr Fuerchau,
kann nun dank Ihnen früher schlafen gehen 
thanks to *all
-
Warum überhaupt einen NOT EXISTS verwenden?
Ich denke ein Exception Join ist an dieser Stelle besser.
Soweit ich weiß kann der Optimizer direkte Joins besser optimieren, bzw. ist sogar in der Lage die Abfragen zu drehen. Bei der Verwendung von Sub-Selects in den Where-Bedingugen werden immer zuerst die From-Angaben verarbeitet und dann die Where-Bedingungen.
(... wobei vom Entwickler-Team in Rochester in den letzten Releasen einiges an Erweiterungen in den Optimizer eingebaut wurde
... was genau erfährt man allenfalls, wenn man mal einen Mike Cain in Bierlaune erwischt und das ist ziemlich selten)
Code:
select ...
from myfile a Exception Join file b
on a.Key = b.Key
Birgitta
-
Bezüglich Performance konnte ich da bisher keinen Unterschied feststellen.
-
Hallo Birgitta,
wo werden weitere where clauseln hinzugefügt?
-
Die On-Klausel kann fast wie eine Where-Klausel gesehen werden:
on a.Key = b.Key and a.key2=b.key2 and b.key3='XX' ...
Ausdrücke und casts sind da auch erlaubt.
Der wesentliche Unterschied zwischen Join und exists ist, dass der Join ggf. mehrere Ergebnisse liefert und somit die Ergebnisse der Haupttabelle mehrfach vorkommen können.
Im Exists wird nur 1 Zugriff durchgeführt (nach Möglichkeit natürlich über einen Index, sonst dauerts).
Similar Threads
-
By chrisonline in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 29-07-15, 11:33
-
By Kampi4 in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 09-10-06, 10:19
-
By srcdbgr in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 12-09-06, 14:37
-
By deni87991 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 04-08-06, 10:32
-
By woki in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 06-06-06, 15:57
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