[NEWSboard IBMi Forum]

Thema: sql join

Hybrid View

  1. #1
    Registriert seit
    Feb 2002
    Beiträge
    164

    sql join

    werte teilnehmer,
    ein Thema, schon zigmal behandelt, leider weiß ich es nicht mehr.

    2 Tabellen A und B.
    ein Satz in Tabelle A kann mehrere passende Verknüpfungen in Tabelle B haben.
    Der Satz in Tabelle A darf aber nur einmal angezeigt werden,
    egal wieviele Verknüpfungen in Tabelle B er hat.
    Allerdings darf er auch nur dann angezeigt werden, wenn mindesten eine Verknüpfung mit Tabelle B vorhanden ist.

    Bitte um Lösungsvorschläge.

    Danke

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    select a.f1, a.f2, ...., b.f1, b.f2, ...
    from tableA a, tableB b
    where
    a.key=b.key ... and .....
    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
    Feb 2002
    Beiträge
    164
    so klappt es leider nicht wie gewünscht.

    folgender Dateninhalt

    Tabelle a....................Tabelle b
    key_a1, f01, f02...........key_a1, key_b1, f01, f02, f03...
    .................................key_a1, key_b2, f01, f02, f03...
    .................................key_a1, key_b3, f01, f02, f03...
    .
    key_a2, f01, f02...........key_a2, key_b1, f01, f02, f03...
    .
    key_a3, f01, f02
    .
    Ein Eintrag in Tabelle a darf nur dann angezeigt werden,
    wenn der Key auch in Tabelle b vorkommt.
    Der Eintrag sollte aber in der Auflistung nur einmal angezeigt werden, egal wieviele gleiche Schlüssel es in Tabelle b gibt.

    key_a1 darf also nur einmal angezeigt werden, obwohl er in Tabelle b dreimal vorkommt.
    key_a3 darf nicht angezeigt werden, da er in Tabelle b keine
    Verknüpfung hat.

    Bitte noch einmal um Antworten.

    Danke

  4. #4
    Registriert seit
    Oct 2006
    Beiträge
    44
    Select t1.fld1, t1.fld2, ... from tabelle t1 inner join tabelle t2 on t1.fld1 = t2.fld1 group by t1.fld1, t1.fld2 , usw (alle Felder die im Select ausgewählt wurden)

    Mal so zu probieren.

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

    (schüttel) was soll denn der arme Kerl da aus der zweiten Datei von mehreren zur Auswahl stehenden Inhalten anzeigen, wenn jetzt die Antwort den ersten kommt, dann ist das kein Fall für SQL, das ist eine
    D a t e n b a n k Abfragesprache und nicht für die Verarbeitung von sequentiellen Haufen gedacht. (ich weiß, da gibt es Work arounds...)

    mfg

    Dieter Bender

    Zitat Zitat von rr2001 Beitrag anzeigen
    so klappt es leider nicht wie gewünscht.

    folgender Dateninhalt

    Tabelle a....................Tabelle b
    key_a1, f01, f02...........key_a1, key_b1, f01, f02, f03...
    .................................key_a1, key_b2, f01, f02, f03...
    .................................key_a1, key_b3, f01, f02, f03...
    .
    key_a2, f01, f02...........key_a2, key_b1, f01, f02, f03...
    .
    key_a3, f01, f02
    .
    Ein Eintrag in Tabelle a darf nur dann angezeigt werden,
    wenn der Key auch in Tabelle b vorkommt.
    Der Eintrag sollte aber in der Auflistung nur einmal angezeigt werden, egal wieviele gleiche Schlüssel es in Tabelle b gibt.

    key_a1 darf also nur einmal angezeigt werden, obwohl er in Tabelle b dreimal vorkommt.
    key_a3 darf nicht angezeigt werden, da er in Tabelle b keine
    Verknüpfung hat.

    Bitte noch einmal um Antworten.

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

  6. #6
    Registriert seit
    Jul 2001
    Beiträge
    2.713
    Zitat Zitat von BenderD Beitrag anzeigen
    (ich weiß, da gibt es Work arounds...)
    Uah - bin grade auf einer Kundenmaschine in uralten RPG-Verwurstelungen drin, und Du schreibst was von würgarounds... <g>

    -h

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ist auch keine Sache eines SQL's (der liefert immer nur ganz Zeilen) sondern eines Reporting-Systems.

    Query/400 kann das ganz gut, wenn man die Felder der Datei A als Gruppenfelder (Gruppenwechsel) deklariert. Dann werden diese Inhalte tatsächlich nur 1 Mal gedruckt.

    Anzeige geht da schon nicht mehr.

    Hier kann man dann eher mit QM-Query Formularen arbeiten.
    Auch hier werden die Gruppenfelder nur 1 Mal ausgegeben, man kann sogar entscheiden, ob am Anfang, Ende oder in den Kopf/Fuss-Zeilen.
    Allerdings hapert es da ein wenig mit der Dezimaleditierung.

    Wer es mit PC-Software versucht, kann z.B. MS-Access-Berichte verwenden, auch die können das sehr gut.
    Für programmierte Anwendungen hat sich CrystalReports etabliert.

    Oder wie wäre es mit:
    - .NET/Data
    - XML/XSLT
    - HTTP
    - Bowser (IE, Netscape, ...)
    - u.v.m
    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

  8. #8
    Registriert seit
    Feb 2002
    Beiträge
    164
    hallo Leute,
    erstmal vielen Dank für die rege Beteiligung.

    Also ganz so wie hier dargestellt ist es nicht.
    Man kann z. B. mittels
    - with - aus Tabelle b, wo ich ja mehrere Verknüpfungen zu Tabelle a haben kann, eine neue Tabelle erstellen,
    wo man pro Key nur mehr einen Eintrag hat.

    Plinzen hat mit "goup by" schon einen wichtigen Ansatz dazu geliefert.

    Vielen Dank an alle.

    RR

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    bei all diesen Spielchen kriegt man aus Tabelle B keine Felder, ohne dass man wieder das Mehrfachproblem hat; wenn man von da keine braucht, sondern nur auf die Sätze aus A eingrenzen will, die mindestens einen Satz gleichen Schlüssels in B haben (sowas wie Kunden, die mindestens eine Bestellung haben), dann geht das ohne jeden komplizierten Schnörkel:

    select distinct A.*
    from A, B
    where A.key = B.key

    mfg

    Dieter Bender


    Zitat Zitat von rr2001 Beitrag anzeigen
    hallo Leute,
    erstmal vielen Dank für die rege Beteiligung.

    Also ganz so wie hier dargestellt ist es nicht.
    Man kann z. B. mittels
    - with - aus Tabelle b, wo ich ja mehrere Verknüpfungen zu Tabelle a haben kann, eine neue Tabelle erstellen,
    wo man pro Key nur mehr einen Eintrag hat.

    Plinzen hat mit "goup by" schon einen wichtigen Ansatz dazu geliefert.

    Vielen Dank an alle.

    RR
    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. SQL inner join
    By Robi in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 22-06-07, 15:52
  2. SQL left join
    By ahingerl in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 08-12-06, 08:28
  3. SQL - Join mit Bedingung und Update
    By cassi in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-11-06, 15:03
  4. SQL JOIN
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 19-10-06, 07:56
  5. RPG mit Embedded SQL, JOIN ..
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-06-06, 12:14

Berechtigungen

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