[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    nur bestimmte Sätze zählen, die noch nicht gezäglt sind

    Hallo
    für folgendes SQL bekomme ich einen Fehler, das 2. max(rrn( wird bemängelt.

    SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
    feld LIKE 'EV%' AND max(RRN(datei)) NOT IN (SELECT
    satznrfeld FROM datei2 WHERE ...)


    lasse ich dort das max weg, (was für mich sogar richtiger ist)
    SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
    feld LIKE 'EV%' AND RRN(datei) NOT IN (SELECT
    satznrfeld FROM datei2 WHERE ...)

    so ist das Ergebniss des 1. max(rrn(
    immer 1 (es gibt keinen Satz mit RRN(1) in der datei.

    lasse ich das in ganz weg
    SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
    feld LIKE 'EV%'

    ist das erg. richtig

    Wie kann ich nur die Sätze zählen,
    (und die max(rrn)) bekommen) die noch nicht in der 'schon-gezählt-datei' = datei2 stehen ?

    Danke Robi

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Angaben unter WHERE beeinflussen die Ergebnismenge. Versuche einmal, das MAX(...) NOT IN ... mittels HAVING anzubinden.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da mußt du ein CTE verwenden:

    with
    MyErg as (
    SELECT COUNT(*) as mycount, max(RRN(datei)) as myrrn FROM datei
    where feld LIKE 'EV%'
    )
    select * from MyErg
    WHERE myrrn NOT IN (SELECT
    satznrfeld FROM datei2 WHERE ...)
    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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.366
    ruft nach Exception join
    select count(*), max(rrn(datei))
    from datei d1 left exception join datei2 d2
    on d1.rrn(datei) = d2.satznrfeld
    where d1.feld like 'EV%'

    D*B
    der sich fragt, warum diese Kiste eine Datenbank hat (F*Z hätte wohl gesagt: konnte man das nicht anders machen???)

    Zitat Zitat von Robi Beitrag anzeigen
    Hallo
    für folgendes SQL bekomme ich einen Fehler, das 2. max(rrn( wird bemängelt.

    SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
    feld LIKE 'EV%' AND max(RRN(datei)) NOT IN (SELECT
    satznrfeld FROM datei2 WHERE ...)


    lasse ich dort das max weg, (was für mich sogar richtiger ist)
    SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
    feld LIKE 'EV%' AND RRN(datei) NOT IN (SELECT
    satznrfeld FROM datei2 WHERE ...)

    so ist das Ergebniss des 1. max(rrn(
    immer 1 (es gibt keinen Satz mit RRN(1) in der datei.

    lasse ich das in ganz weg
    SELECT COUNT(*), max(RRN(datei)) FROM datei WHERE
    feld LIKE 'EV%'

    ist das erg. richtig

    Wie kann ich nur die Sätze zählen,
    (und die max(rrn)) bekommen) die noch nicht in der 'schon-gezählt-datei' = datei2 stehen ?

    Danke Robi
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    @Pikachu
    Danke, das hat so funktioniert !

    @Fuerchau
    so haben wir es zwischenzeitlich versucht, aber die having variante ist kürzer und lesbarer

    @BenderD
    vielen Dank aber wie gesagt: das andere ist kürzer und lesbarer.

    @Konrad Zuse
    doch, wenn die Anwendung in der Neuzeit entstanden wäre



    Danke an alle !
    Robi

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Es stellt sich trotzdem noch die Frage, was denn so alles in der Datei2 drinsteht. Und welche Sätze alles durch den COUNT(*) gezählt werden sollen. Vielleicht kannst du ein Beispiel machen?

    Wie steht denn der Parameter REUSEDLT bei der ersten Datei?

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Es geht um völlig wahlfreie Datenbankereignisse die gemeldet werden sollen. Aber eben nur ein mal (einstellbar)
    Man erfasst n Bedingungen zu einer oder mehreren Dateien und sagt : Bitte email an ... wenn Bedingung eintritt. I.d.R. will man diese Info aber nicht jede halbe Stunde.
    Robi

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Dann darf aber der Parameter REUSEDLT der ersten Datei nicht auf *YES stehen, wenn auch Datensätze daraus gelöscht werden können. Und ihr dürft diese Datei auch nicht reorganisieren und neu anordnen (RGZPFM), da ansonsten der Inhalt der Datei 2 nicht mehr stimmt.

Similar Threads

  1. Abfrage im CL auf aktive Sätze einer Datei
    By Hubert Brethauer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 14-03-06, 09:37
  2. Reihenfolge der Sätze im LF
    By alexander may in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-12-05, 19:25
  3. Gelöschte Sätze werden verarbeitet
    By Hubert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 20-05-05, 10:21
  4. doppelte Sätze in PF finden und löschen
    By Schnichels in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-11-01, 12:54
  5. Sätze einer Datei zählen
    By Ursus in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 09-08-01, 07:59

Berechtigungen

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