[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2007
    Beiträge
    82

    SQL Fetch First 1 Rows

    Hallo *All,

    wenn ich folgenden Select absetze:

    select preis from artikelstamm
    where nummer = 150000
    fetch first 1 rows only

    funktioniert das tadellos und ich bekomme wirklich nur den ersten gefundenen Satz angezeigt.

    Gebe ich aber ein:

    update artikelstamm
    set preis =
    (select preis from artikelstamm
    where nummer = 150000
    fetch first 1 rows only )
    where nummer = 100000

    bekomme ich die Fehlermeldung:

    Schlüsselwort FETCH nicht erwartet. Gültige Token: ) UNION EXCEPT.

    Geht der Fetch First in einem Subselect nicht oder ist meine Syntax falsch?

    Gruss
    Ulli

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Fetch im Subselect gibts leider wirklich nicht. Hier musst du dir eine andere Methode ausdenken, um nur 1 Satz zu bekommen.
    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
    May 2007
    Beiträge
    82
    Danke,

    (wäre ja auch zu schön gewesen)

    mfg
    Ulli

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    welchen willst du denn haben? ohne order by clause überlässt man die Reihenfolge der Sätze der Query Engine und könnte im Extremfall bei mehreren Aufrufen unterschiedliche Reihenfolgen bekommen. Fetch first ohne order by würde auf deutsch dann heißen: "gib mir irgendeinen". Will man einen bestimmten, muss man das präzise sagen:
    select ...
    from ...
    where...
    and nochnFeld = select max(...) (oder auch min(...) from... where...

    D*B

    Zitat Zitat von USDAVIS Beitrag anzeigen
    Hallo *All,

    wenn ich folgenden Select absetze:

    select preis from artikelstamm
    where nummer = 150000
    fetch first 1 rows only

    funktioniert das tadellos und ich bekomme wirklich nur den ersten gefundenen Satz angezeigt.

    Gebe ich aber ein:

    update artikelstamm
    set preis =
    (select preis from artikelstamm
    where nummer = 150000
    fetch first 1 rows only )
    where nummer = 100000

    bekomme ich die Fehlermeldung:

    Schlüsselwort FETCH nicht erwartet. Gültige Token: ) UNION EXCEPT.

    Geht der Fetch First in einem Subselect nicht oder ist meine Syntax falsch?

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

  5. #5
    Registriert seit
    May 2007
    Beiträge
    82
    Zitat Zitat von BenderD Beitrag anzeigen
    welchen willst du denn haben? ... Fetch first ohne order by würde auf deutsch dann heißen: "gib mir irgendeinen".

    D*B
    Ja, ich wollte tatsächlich irgendeinen von mehreren möglichen Sätzen mit derselben Art.nummer haben, die nur in Verbindung mit dem Lager eindeutig ist d.h. der Artikel kann in unterschiedlichen Lagern vorkommen, muss aber nicht zwangsläufig in jedem definierten Lager vorkommen. Der VKPreis ist in jedem Lager gleich und soll bei bestimmten Artikeln von anderen Artikeln übernommen werden.

    Habe das jetzt im Prinzip so gelöst:

    update artikelstamm
    set preis =
    (select preis from artikelstamm
    where nummer = 150000 and
    lager =
    (select max(lager) from
    artikelstamm where
    nummer = 150000) )
    where nummer = 100000

    Würde Fetch First im Subselect gehen,
    hätte ich mir allerdings den 2. Subselect sparen können.

    Nochmals Danke für die Hinweise.

    Gruss
    Ulli

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Warum nicht so? Oder übersehe ich da was wichtiges?

    update artikelstamm
    set preis =
    (select max(preis) from artikelstamm
    where nummer = 150000)
    where nummer = 100000

  7. #7
    Registriert seit
    May 2007
    Beiträge
    82
    Bingo !

    Da hab' ich ja ein ziemlich grosses
    Brett vor'm Kopf gehabt.

    thx
    Ulli

Similar Threads

  1. Brauche Hilfe zu FETCH xxx USING DESCRIPTOR
    By AndreasH in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 08-05-15, 13:09
  2. Fetch first x rows only
    By cicero22 in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 14-08-09, 13:00
  3. FETCH n ROws in einzelne Felder einer DS
    By pedro-zapata in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 11-09-06, 12:34
  4. Group und fetch first xx rows
    By linguin in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 04-08-06, 10:38
  5. SQL - optimize for xxx rows
    By roko in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-12-04, 09:45

Berechtigungen

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