[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.077

    SQL für Anfänger Teil x

    Hallo *all,
    ich habe jetzt 2 Tage über das Problem gegrübelt, komme aber nicht auf die Lösung.

    Ich möchte gerne alle Sätze aus Datei1 haben die ein Pendant in Datei2 haben.

    Code:
    select          t01.adkto                                
           from xadr01pf t01 where adkto in (select adkto    
                 from mantay t02 where t01.adkto = t02.adkto)
                 and t01.adabkz = 0                          
                 order by t01.adkto
    Jetzt hätte ich erwartet das ich jeden entsprechenden Satz einmal angezeigt bekomme.
    Is aber nich.

    Er zeigt mir die Sätze 2x an, obwohl adkto nur einmal in xadr01pf ist.
    Klar kann ich ein distinct einbauen, abe ich verstehe nicht warum er es macht.

    Kann mir jemand mal dieses Anfängerproblem erklären?!

    GG 4549

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wenn du mit IN arbeitest, brauchst du diese Verknüpfung nicht.
    Probier es mal so:
    Code:
    select          t01.adkto                                
           from xadr01pf t01 where adkto in (select t02.adkto    
                 from mantay t02)
                 and t01.adabkz = 0                          
                 order by t01.adkto
    lg Andreas

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Es war mal wieder der Klassiker,
    vertraue keinen Daten die Du nicht selber erstellt hast. In der xadr01pf waren die Daten doch 2x drin.

    Ich liebe es in fremden Daten zu wühlen....

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Um jede ADKTO nur einmalig anzuzeigen, brauchst Du entweder einen DISTINCT oder GROUP BY.

    Ich würde außerdem einen Sub-Select in den WHERE-Bedingungen vermeiden.
    Stattdessen würde ich die Datei/Tabelle/View in der From-Anweisung angeben und mit der 1. Datei/Tabelle/View verknüpfen.

    Etwa so:
    Code:
    select Distinct t01.adkto                                
           from xadr01pf t01 join ManTay T02
                on T01.ADKTO = T02.ADKTO                     
           where t01.adabkz = 0                          
           order by t01.adkto;
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Wenn du keine Felder aus Datei2 benötigst reicht ebenso ein
    select * from Dateia a
    where exists (select * from dateib where a.key = b.key)

    Es gibt halt viele Wege.
    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

Similar Threads

  1. IBM AS/400 Anfänger-Fragen - System i5
    By LKaderavek in forum IBM i Hauptforum
    Antworten: 35
    Letzter Beitrag: 21-10-14, 11:50
  2. AS/400 obdc teil 2
    By logo_2 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 28-04-03, 12:51
  3. AS400 Anfänger
    By erdal in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 24-07-02, 17:55
  4. RMTOUTQ Teil .... ?
    By alex in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 19-04-02, 08:05
  5. Anfänger-- Verbindung zwischen AS/400 und PC
    By hakim in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 26-10-01, 10:30

Berechtigungen

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