[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2005
    Beiträge
    74

    SQL EXISTS Abfrage ausserhalb WHERE

    Hallo,

    ist es möglich eine EXISTS-Abfrage ausserhalb einer WHERE-Bestimmung eines SELECTs auszuführen? Ich benötige das in diesem Fall um in einem ILERPG-Programm herauszufinden, ob ein Satz exisitiert. Praktisch eine Ablösung von SETLL + %EQUAL.

    Danke
    M.Withake

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Das läßt sich nur mittels normalem Select erledigen:

    select count(*) into :mycount
    from myfile
    where .....

    if mycount>*zero;
    :
    endif;
    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

  3. #3
    Registriert seit
    Mar 2005
    Beiträge
    74
    Das mit dem SELECT COUNT(*) ist nicht wirklich eine gute Lösung. Wenn es z.B. darum geht, ob ein Kunden in einer Auftragsdatei vorhanden ist und die Auftragssätze für diesen Kunden 100.000 Sätze oder mehr betragen, wird die Abfrage sehr lange dauern...

    Alternativ hatte ich schon folgendes probiert:

    SELECT 1
    INTO :HOSTVARIABLE
    FROM DATEI
    WHERE EXSIST (SELECT * FROM DATEI WHERE bedingung)
    FETCH FIRST ROW ONLY

    Aber das ist auch nicht so schnell wie SETLL/%EQUAL.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    select feldx into :myfeld
    from datei
    where < bedingung >
    fetch first 1 rows only

    if sqlcod = *zero; // Satz vorhanden
    else;
    endif;

    ist schon der richtige Weg.
    Wenn für "Bedingung" Zugriffspfade bestehen erfolgt der Zugriff auch schnell

    Ggf. kann mit "optimize for 1 rows" noch etwas beschleunigt werden.

    Allerdings wird nichts so schnell wie SETLL sein, da hier ja native über eine LF zugegriffen wird. Wobei ein CHAIN mit verkürztem Schlüssel noch schneller ist.
    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    Rekord Löffel Exzess ist immer das sparsamste und damit bezogen auf eine atomare Operation das schnellste (da gibt es ein paar Marketing Aussagen, die das anders darstellen: Marketing halt...).
    SQL kann dann Speed machen, wenn Zugriffe grob granular sind (ja, ein komplexer Join kann schneller sein als 76 read und chain und trulala). Auch ein Select count(*) wird bei entsprechender Hardware und Index Design schneller sein als nachzählen mit Rekord Löffel Exzess.
    Der Rest an Speed in der Datenbank kommt aus dem Applikations Design (cachen von häufig gelesenen Sätzen, sinnige Zugriffslogik etc.) Letzteres führt dazu, dass im richtigen Leben mit SQL richtig Dampf gemacht werden kann, wenn man ausreichend Hardware hat.

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    select feldx into :myfeld
    from datei
    where < bedingung >
    fetch first 1 rows only

    if sqlcod = *zero; // Satz vorhanden
    else;
    endif;

    ist schon der richtige Weg.
    Wenn für "Bedingung" Zugriffspfade bestehen erfolgt der Zugriff auch schnell

    Ggf. kann mit "optimize for 1 rows" noch etwas beschleunigt werden.

    Allerdings wird nichts so schnell wie SETLL sein, da hier ja native über eine LF zugegriffen wird. Wobei ein CHAIN mit verkürztem Schlüssel noch schneller ist.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Einfache Abfrage in COBOL/400 mit EXEC SQL
    By AS400-Anfänger in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-06-06, 13:18
  2. Abfrage nach <> Ziffern in SQL
    By behmer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-05-06, 12:52
  3. sql abfrage
    By steven_r in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-05-06, 15:49
  4. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  5. sql abfrage mit substring
    By juergenkemeter in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 17-11-04, 14:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •