[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte
  1. #13
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Auswahl "2=Mit Primärdatei gleiche Sätze" ist ein INNER JOIN !
    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

  2. #14
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo Fürchau !

    Ich dachte, Auswahl "1=Gleiche Sätze" wäre ein INNER JOIN und Auswahl "2=Mit Primärdatei gleiche Sätze" ein OUTER JOIN. D.h. bei Auswahl 2 bekommt man auch die Datensätze der Primärdatei, zu denen kein passender Datensatz in den Sekundärdateien vorhanden ist (und obwohl die entsprechenden Verknüpfungsfelder angegeben sind). Das geht im SQL mit dem WHERE, das der RTVQMQRY ALWQRYDFN(*ONLY) daraus macht, leider nicht.

    Viele Grüße
    Jürgen

  3. #15
    Registriert seit
    Oct 2004
    Beiträge
    251
    Zitat Zitat von Fuerchau
    Auswahl "2=Mit Primärdatei gleiche Sätze" ist ein INNER JOIN !
    Einspruch!!

    Verknüpfungsart 1 (=gleiche Sätze):
    ist ein INNER JOIN

    Verknüpfungsart 2 (= mit Primärdatei gleiche Sätze)
    ist ein LEFT OUTER JOIN

    Verknüpfungsart 3 (= mit Primärdatei ungleiche Sätze)
    ist ein OUTER JOIN

    Ich kenne das Tool zwar nicht, aber wenn es die Verknüpfungsart 2 nicht mit LEFT OUTER JOIN übersetzt, ist es keine 100% Umsetzung.

    Abgesehen davon, werden im SQL Felder von erfolglosen LEFT OUTER Joins mit NULL zurückgegeben, im Query mit dem Defaultwert. D.h. das ev. Abfragen anders reagieren können und 2. das Schlüsselwort VALUE (= COALESCE) im Query für diese Fälle unbrauchbar ist.

    LG

    Robert

  4. #16
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ja Ok, Verknüpfungsart stimmt.

    Aber VALUE in Query hilft mir nicht (da ja immer Default geliefert wird, ausser bei SQL-Tables) sondern eher im SQL.
    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. #17
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo Robert!

    Ok, Auswahl 2 = LEFT OUTER JOIN.

    Zitat Zitat von RobertPic
    Verknüpfungsart 3 (= mit Primärdatei ungleiche Sätze)
    ist ein OUTER JOIN
    Hm, bist du die da sicher? Ich hätte mir unter einem OUTER JOIN jetzt was anderes vorgestellt.

    Viele Grüße
    Jürgen

  6. #18
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364
    Hallo QRY - Leidensgenossen,

    QRY sind halt Segen und Fluch zugleich.

    Wir haben auch mehrere tausend QRY im System und ich stehe auch immer wieder vor der Aufgabenstellung, herauszufinden, in welchen QRY eine bestimmte Bibliothek oder Datei benutzt wird.

    Ich hatte mir auf Anleitung von IBM vor vielen Jahren ein Programm RTVQRYF gebastelt, welches alle verwendete Dateien einer QRY in eine Datei ausgibt.
    Habe dieses so in CL eingebunden und kann dann mit FINQRY 'BIBLIOTHEK' alle Qry dieser Bibiothek ausgeben. In Kombination mit einem weiteren CL, das alle Bibliotheken der As400 einliest, kann ich dann "auf Knopfdruck" eine Übersicht über alle im System vorhandenen QRY ausgeben.

    Leider bin ich kein Programmierer und es ist schon viele Jahre her, das ich das Programm erstellt hab.

    Wenn aber Interesse besteht, kann ich mal recherchieren, wie das genau funktioniert. Alle Quellen müsste ich noch haben.

    Gruß
    HS

  7. #19
    Registriert seit
    Oct 2004
    Beiträge
    251
    Zitat Zitat von Pikachu
    ...
    Hm, bist du die da sicher? Ich hätte mir unter einem OUTER JOIN jetzt was anderes vorgestellt.
    100%, der Outer Join liefert nur Sätze, welche nicht in der verknüpften (Sekundär) Datei vorkommen.

    Beispiel gefällig?
    Outer Join (Query 3, auf der AS/400 im SQL exception join)

    select * from kunstm exception join kunsta on
    kunstm.firma = kunsta.firma and kunstm.kunnr = kunsta.kunnr

    Liefert alle Kunden (aller Mandaten) aus der Kundenstammdatei, welche keine Sätze in der Statistikdatei haben.

    Left Outer Join (Query 2):
    select kunstm.firma, kunstm.kunr, kunstm.kunnam, value(kunsta.kunums, 0) from kunstm left outer join kunsta on kunstm.firma = kunsta.firma and kunstm.kunnr = kunsta.kunnr

    Liefert alle Kunden mit Umsatz, auch wenn sie keinen Satz in der Umsatzdatei haben.

    Leider kann man im Query bei der Verknüpfung der Dateien nicht mit Konstanten arbeiten (in diesem Fall, hat man meistens ein Geschäftsjahr in der Statistikdatei), daher ist Query in diesen Sachen kein (<- edit) vollwertiger SQL-Ersatz.

    Der Standard Inner-Join, liefert nur Kunden mit Umsatzsätzen:

    select kunstm.firma, kunstm.kunr, kunstm.kunnam, kunsta.kunumsfrom kunstm, kunsta where kunstm.firma = kunsta.firma and kunstm.kunnr = kunsta.kunnr

    Zitat Zitat von Fuerchau
    ... Aber VALUE in Query hilft mir nicht (da ja immer Default geliefert wird, ausser bei SQL-Tables) sondern eher im SQL.
    hätte ich eigentlich auch so gemeint...

    Zitat Zitat von robertpic
    ..das Schlüsselwort VALUE (= COALESCE) im Query für diese Fälle unbrauchbar ist.
    @erni:
    Zum eigentlichen Problem:
    gibt es die alten Datein noch nach der Umstellung?

    Wir haben einmal alle logischen Dateien verschoben. Die Queries sind zwar beim Ausführen fehlgeschlagen, aber beim ersten Mal editieren, hat er sich die Libl. der Dateien aufgrund der Libl-Liste (mit Warnbildschirm) wieder selbst geholt. Wir haben daher die meisten Queries unberührt gelassen und nur eine Info an die Querybenutzer ausgegeben.

    LG
    Robert

  8. #20
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo Robert !

    Was es alles für JOINs gibt ...

    Aber unter einem OUTER JOIN hatte ich mir eigentlich vorgestellt, dass dieser die Vereinigungsmenge aus Datei 1 und Datei 2 liefert und die jeweils passenden Datensätze zusammenfasst. Und Datensätze zu denen es keine passende Entsprechung gibt, auch mit ausgibt. Und das in beide Richtungen gesehen. Gibt es sowas überhaupt im SQL?

    Viele Grüße
    Jürgen

  9. #21
    Registriert seit
    Oct 2004
    Beiträge
    251
    Zitat Zitat von Pikachu
    ...vorgestellt, dass dieser die Vereinigungsmenge aus Datei 1 und Datei 2 liefert und die jeweils passenden Datensätze zusammenfasst. Und Datensätze zu denen es keine passende Entsprechung gibt, auch mit ausgibt.
    Bis hier her ist es ein lupenreiner LEFT OUTER JOIN (Queryverknüpfungsart 2).

    Zitat Zitat von Pikachu
    Und das in beide Richtungen gesehen.
    Aber Ersatzwerte für nicht vorhandene Sätze, gibt es nur für die Datei2 (SQL mit NULL, Query Defaultwerte).

    In den meisten Fällen reicht das aber, weil z.B. keine Umsätze (Datei2) usw. ohne den entsprechenden Kunden (Datei1) geben sollte usw.

    Zitat Zitat von Pikachu
    Gibt es sowas überhaupt im SQL?
    Wenn man alle Kombinationen (Datei1 + Datei2, Datei1 ohne Datei2, Datei2 ohne Datei1) braucht, muss man 2 Select-Anweisungen mit UNION verketten.

    LG
    Robert

  10. #22
    Registriert seit
    Jul 2001
    Beiträge
    177

    Wink

    Hallo Jochen,

    wir haben ein Produkt "QueryOptimizer", damit kannst du die betroffenen Querys herausfinden und die Querys der Reihe nach im Änderungsmodus aufrufen.

    Eine Änderungsmöglichkeit im Batch gibt es leider nicht, selbst für den Aufruf im Änderungsmodus mussten wir tricksen.

    Evtl. könnte man hier aber noch was draufsetzen.

    Bei Interesse kannst du ja mal Kontakt mit uns aufnehmen.

    Viele Grüsse

    Andreas Göring

  11. #23
    Registriert seit
    Nov 2004
    Beiträge
    6
    Hallo,

    Zitat Zitat von Fuerchau
    RTVQRYF ist kein offizieller IBM-Befehl sondern stammt aus irgendeiner Toolbox.
    Wie wärs denn mal mit einem "CHGQRYF QRY(MYQRY) LIB(MYLIB) REPLIB(NEWLIB)" ???
    Das wäre natürlich sehr schön und ausgesprochen interessant! :-)

    Gruß
    Jochen

  12. #24
    Registriert seit
    Nov 2004
    Beiträge
    6
    Hallo Andreas,

    Zitat Zitat von andigoering
    wir haben ein Produkt "QueryOptimizer", damit kannst du die betroffenen Querys herausfinden und die Querys der Reihe nach im Änderungsmodus aufrufen.
    wir setzen das Tool CrtQryInf/400 ein, um die betroffenen Query's zu finden. Hier ist
    ein Aufruf im Änderungsmodus allerdings nicht möglich.

    Werde mir mal das Handbuch als PDF ziehen. Danke.

    Gruß
    Jochen

Similar Threads

  1. QueryManager / Query ---> Aufruf mit Variablen
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 29-11-06, 18:07
  2. Datum in Query
    By heini in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-09-06, 10:10
  3. query outq
    By TARASIK in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-08-06, 09:52
  4. Query Manager -_-
    By Azubiiiiii in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 03-08-06, 09:44
  5. Query und Datum
    By Hubert Brethauer in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 05-05-06, 12:37

Berechtigungen

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