[NEWSboard IBMi Forum]

Thema: SQL-Problem

Hybrid View

  1. #1
    Registriert seit
    Dec 2003
    Beiträge
    89

    SQL-Problem

    Hallo zusammen!

    Ich habe ien Problem mit einer SQL-Abfrage und brauche eure Hilfe.

    Ich muss von einem PC über ODBC Daten auf der AS400 lesen.
    Ich habe nun im Kundenstamm ein Feld für den Ansprechpartner Innendienst KUANID, und ein Feld für den Ansprechpartner Aussendienst KUANAD.
    Die beiden Felder sind 3 stellig und numerisch.
    Bei einem Kunden steht im Feld KUANID 003.

    Die Tabelle User hat 4 Felder.
    key1 ALPHA(1),key2 ALPHA(1),key3 ALPHA(1),text ALPHA(30)

    Um nun den Ansprechpartner von oben zu bekommen,
    wird key1 mit 0 , key2 mit 0 und key3 mit 3 gefüllt.

    Der Tabellenaufbau ist uralt und kann von mir nicht geändert werden.

    Ich versuche nun mit einem SQL-Statement den Kundensatz, und gleich die Ansprechpartner(Text) zu lesen.

    Mein Versuch:
    Select * from kustp, (Select text from ANSP where
    key1='SUBSTR(DIGITS(KUANID),1,1)' and
    key2='SUBSTR(DIGITS(KUANID),2,1)' and
    key3='SUBSTR(DIGITS(KUANID),3,1)' ) AS anspad

    -> das geht so net

    Hat jemand ne Idee ?

    GRuß jogi

  2. #2
    Registriert seit
    May 2002
    Beiträge
    1.121
    PHP-Code:
    Select kustp.*, ansp.text
    from   kustp
    ansp
    where key1
    SubStr(Digits(KUANID), 11)
      and 
    key2SubStr(Digits(KUANID), 21)
      and 
    key3SubStr(Digits(KUANID), 31
    versuche das mal.
    ungetestet
    gruß ronald

  3. #3
    Registriert seit
    Dec 2003
    Beiträge
    89
    Hallo nochmal!

    Ich muss mein SQL-Statement verbessern:
    Select * from kustp, (Select text from ANSP where
    key1='SUBSTR(DIGITS(KUANID),1,1)' and
    key2='SUBSTR(DIGITS(KUANID),2,1)' and
    key3='SUBSTR(DIGITS(KUANID),3,1)' ) AS anspid,
    (Select text from ANSP where
    key1='SUBSTR(DIGITS(KUANAD),1,1)' and
    key2='SUBSTR(DIGITS(KUANAD),2,1)' and
    key3='SUBSTR(DIGITS(KUANAD),3,1)' ) AS anspad
    where kuknr = 4711

    Ich benötige den Text der Ansprechpartner für beide Felder
    (KUANID und KUANAD) in einer Ausgabezeile !

    Gruß Jogi

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Substr ist doch die SQL-Funktion !
    Lass das Hochkomma weg.
    Das 2. Problem ist das Komma, da es ggf. als Dezimalkomma interpretiert wird, daher ein Leerzeichen vor der Ziffer.

    Select * from kustp, (Select text from ANSP where
    key1=SUBSTR(DIGITS(KUANID), 1, 1) and
    key2=SUBSTR(DIGITS(KUANID), 2, 1) and
    key3=SUBSTR(DIGITS(KUANID), 3, 1) ) AS anspad

    @Ronald
    Subselect geht auch an Stelle einer Tabelle.
    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. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Betrachte mal deinen SQL genau !
    Du machst hier einen Cross-Join, da du keine Beziehung definiert hast.
    Zwischen KUST und ANSP muss es eine Beziehung geben, die du am besten in die Where-Klausel legst.
    Allerdings benötigst du hierfür die Schlüsselfelder zusätzlich.

    Ronalds Weg ist da der bessere, da du direkt die Beziehung und Felder definieren kannst.
    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

  6. #6
    Registriert seit
    Mar 2005
    Beiträge
    74
    Hallo,

    die FROM-Anweisung steht an der falschen Stelle:

    Select kustp.*, (Select text from ANSP where
    key1=SUBSTR(DIGITS(KUANID), 1 , 1) and
    key2=SUBSTR(DIGITS(KUANID), 2 , 1) and
    key3=SUBSTR(DIGITS(KUANID), 3 , 1) ) AS anspid,
    (Select text from ANSP where
    key1=SUBSTR(DIGITS(KUANAD), 1 , 1) and
    key2=SUBSTR(DIGITS(KUANAD), 2 , 1) and
    key3=SUBSTR(DIGITS(KUANAD), 3 , 1) ) AS anspad
    from kustp
    where kuknr = 4711

    Gruß
    M.Withake

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    DAS ist eine Frage der Betrachtungsweise.
    - Singlefield-Subselect
    - Join-Subselect

    Was will der Programmierer !?
    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
    Mar 2005
    Beiträge
    74
    Zitat Zitat von Fuerchau
    DAS ist eine Frage der Betrachtungsweise.
    - Singlefield-Subselect
    - Join-Subselect

    Was will der Programmierer !?
    Das hat der Programmierer doch angegeben:

    Ich benötige den Text der Ansprechpartner für beide Felder
    (KUANID und KUANAD) in einer Ausgabezeile !

Similar Threads

  1. problem mit eigener sql function
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 26-05-06, 16:37
  2. SQL Problem
    By Lucky4712 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-05-06, 15:57
  3. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  4. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38
  5. Problem bei ILE COBOL mit sql connect to
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 13:55

Berechtigungen

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