[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    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

  2. #2
    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

  3. #3
    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

  4. #4
    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

  5. #5
    Registriert seit
    Nov 2004
    Beiträge
    6
    Hi,

    Zitat Zitat von RobertPic
    @erni:

    Zum eigentlichen Problem:
    gibt es die alten Datein noch nach der Umstellung?
    ...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
    eine große Masse unserer Query's, leider die Mehrzahl, wird über einen Job-Scheduler oder direkt aus dem Anwendermenü per RUNQRY eventl. noch mit RCDSLT(*YES) aufgerufen. Der Benutzer weiss in der Regel wenig damit anzufangen. Die betroffenen
    Query's in den Benutzerbibliotheken müssen sowieso vom Anwender selber geändert werden.

    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
  •