[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.373
    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/

  2. #2
    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

  3. #3
    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

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
  •