[NEWSboard IBMi Forum]

Thema: Not Exist

Hybrid View

  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    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

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    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)

  3. #3
    Registriert seit
    Dec 2011
    Beiträge
    11
    als Ergänzung zum Beitrag über mir:
    du hast das 'S' am EXISTS vergessen

    mfg
    Klaus

  4. #4
    Registriert seit
    Apr 2012
    Beiträge
    360
    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ß

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke Herr Fuerchau,

    kann nun dank Ihnen früher schlafen gehen

    thanks to *all

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Bezüglich Performance konnte ich da bisher keinen Unterschied feststellen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo Birgitta,
    wo werden weitere where clauseln hinzugefügt?

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQL INSERT if not exist then update
    By chrisonline in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 29-07-15, 11:33
  2. "Environment variable not found"
    By Kampi4 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-10-06, 10:19
  3. IBM DB2 Client Configuration Assistant
    By srcdbgr in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 12-09-06, 14:37
  4. NOT NULL WITH DEFAULT
    By deni87991 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 04-08-06, 10:32
  5. 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
  •