[NEWSboard IBMi Forum]

Thema: DB2 Limit

  1. #1
    Registriert seit
    Aug 2007
    Beiträge
    15

    DB2 Limit

    hi...

    habe eine db2 datanbank auf einer i5 von ibm

    wie kann ich bei einer abfrage ein limit setzen(Die datensätze einer abfrage von x bis y)?
    das mit "ROW_NUMBER() OVER(ORDER BY SPALTE) AS ZEILE" funtioniert irgendwie nicht...

    ich hoffe ihr könnt mir da weiter helfen?

    ps: wie bekomme ich die db2 version heraus?

    gruß

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    1. da auf der AS/400/iSeries/System i die Datenbank im Betriebssystem integriert ist, richtet sich die Datenbanken Version immer nach der Versions-Nr. des Releases, also V5R3 oder V5R4.

    2. Die Funktion ROW_NUMBER ist erst ab Release V5R4 verfügbar und kann nur von der SQL query engine ausgeführt werden.

    3. Wenn ihr auf Release V5R4 seid, und Du z.B. nur die Zeilen mit der Nummerierung 3 bis 7 haben möchtest, musst Du eine Common Table Expression verwenden etwa so.

    PHP-Code:
    With x as (Select a.*, 
                      
    Rank() Over(Order By Umsatz Desc) as Rang
                  From UmsMitarb a
                  Where Jahr 
    2007)
    Select from x
      where Rang between 3 
    and 
    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Aug 2007
    Beiträge
    15
    also wir sind auf V5R3...

    wie mache ich das da?
    oder gibt es da keine möglichkeit?


    gruß

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    ich kenne Deine Anforderungen nicht, aber unter V5R3 kannst Du vielleicht den folgenden Workaround verwenden.
    Im folgenden Beispiel wird der 8 - 10 Satz zurückgebracht.

    PHP-Code:
    With  x  as (Select 
                    
    From Tabelle
                    Where 
    ....
                    
    Order By Spalte
                    Fetch First 10 Rows only
    ),
          
    y  as  (Select *
                    
    From x
                    Order By Spalte Desc
                    Fetch First 3 Rows Only
    )
    Select from y
    Order By Spalte 
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Aug 2007
    Beiträge
    15
    Erstmal vielen dank für deine hilfe bis jetzt... (DER SQL befehl is genial... da wär ich net so schnell draufgekommen...)

    aber leider geht das anscheinend auch nicht...
    wenn ich das in strsql eingebe dann:
    Code:
    WITH X as (SELECT * FROM TABELLE)                                       
         Y as (SELECT * FROM X)                                     
    
    Token Y ungültig. Gültige Token: ( SELECT.
    könnte es noch eine andere möglichket geben?

    gruß

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Setze mal noch ein Komma zwischen ) und y, dann sollte es gehen.

    Oder probier's mal so:
    PHP-Code:
    SELECT FROM (
    SELECT FROM (
    SELECT FROM TABELLE WHERE ...
    ORDER BY SPALTE      FETCH FIRST 10 ROWS ONLYX
    ORDER BY SPALTE DESC FETCH FIRST  3 ROWS ONLY
    Y
    ORDER BY SPALTE 

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Sorry,
    ich hatte ein Komma vergessen.

    Die beiden Common Table Expressions müssen durch ein Komma getrennt werden. (Ich habe es in meinem SQL-Statement oben korrigiert.)

    Common Table Expressions gibt es übrigens schon länger als Sub-Selects. CTEs wurden V4R3 eingeführt, während Sub-Selects erst ab Release V5R1 verwendet werden können.

    Birgitta
    Birgitta Hauser

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

Similar Threads

  1. Problem mit DB2 Connect
    By Ewald in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 24-01-07, 18:32
  2. Zugriff auf DB2 UDB
    By Azaron in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-12-06, 13:42
  3. 13.12.06 - DB2 V9 - pureXML, System i5 und CenturioDB
    By mlitters in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 11-10-06, 16:52
  4. DB2 <-> SQL-Datenbank (XAL)
    By MKl. in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-08-06, 07:46
  5. Access -> ODBC-> DB2
    By bluesXplosion in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 03-08-06, 09:52

Berechtigungen

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