[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2005
    Beiträge
    103

    Question SQL-Abfrage mit bedingtem Where

    Hallo zusammen,

    bin noch ziemlich neu im SQL-Umfeld und suche seit 2 Stunden händeringend eine Lösung für folgendes Problem:

    Um unsere Programmierer zu entlasten, möchte ich unseren Usern ein Programm zur Hand geben, um sich selbst Verkaufsstatistiken zu erstellen. Hierfür habe ich eine DSPF erstellt, in welcher die User die gewünschten Auswertungen spezifizieren können.
    Wenn ein Anwender z. B. alle Umsätze einer best. Kundengruppe möchte, so soll er nur diese in das Feld IKDGR eintragen müssen.
    Da ich aber noch viele andere Felder abfragen lassen möchte, muss ich meine WHERE-Anweisung bedingen, so dass ich nur die Werte in meiner WHERE-Anweisung abfrage, die der Benutzer auch eingegeben hat.

    Also ungefähr so:

    Select Feld1, Feld2 .... from LIB/FILE
    where
    if :IKDGR > 0 then FILE.KDGR = :IKDGR end AND
    if :IVERBAND > 0 then FILE.VERBAND = :IVERBAND end AND
    if :IKDNR > 0 then FILE.KDNR = :IKDNR end AND ....

    Soweit verständlich ausgedrückt ??

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    relativ einfach geht das mit between und Vorbelegung der entsprechenden Variablen mit highval und loval; wenn dann nix ausgewählt wird, dann kriegt man alles.

    D*B

    Zitat Zitat von Tobse77 Beitrag anzeigen
    Hallo zusammen,

    bin noch ziemlich neu im SQL-Umfeld und suche seit 2 Stunden händeringend eine Lösung für folgendes Problem:

    Um unsere Programmierer zu entlasten, möchte ich unseren Usern ein Programm zur Hand geben, um sich selbst Verkaufsstatistiken zu erstellen. Hierfür habe ich eine DSPF erstellt, in welcher die User die gewünschten Auswertungen spezifizieren können.
    Wenn ein Anwender z. B. alle Umsätze einer best. Kundengruppe möchte, so soll er nur diese in das Feld IKDGR eintragen müssen.
    Da ich aber noch viele andere Felder abfragen lassen möchte, muss ich meine WHERE-Anweisung bedingen, so dass ich nur die Werte in meiner WHERE-Anweisung abfrage, die der Benutzer auch eingegeben hat.

    Also ungefähr so:

    Select Feld1, Feld2 .... from LIB/FILE
    where
    if :IKDGR > 0 then FILE.KDGR = :IKDGR end AND
    if :IVERBAND > 0 then FILE.VERBAND = :IVERBAND end AND
    if :IKDNR > 0 then FILE.KDNR = :IKDNR end AND ....

    Soweit verständlich ausgedrückt ??
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Probier's mal so:

    Code:
     
    SELECT Feld1, Feld2 ....
    FROM   LIB/FILE
    WHERE  CASE WHEN :IKDGR    <> 0 THEN :IKDGR    ELSE KDGR    END = KDGR
    AND    CASE WHEN :IVERBAND <> 0 THEN :IVERBAND ELSE VERBAND END = VERBAND
    AND    CASE WHEN :IKDNR    <> 0 THEN :IKDNR    ELSE KDNR    END = KDNR
    AND    ....

  4. #4
    Registriert seit
    May 2005
    Beiträge
    103
    Hallo BenderD und Pikachu,

    vielen Dank für die Antworten !!!

    Funktionieren beide, wobei ich mich für die von Pikachu entschieden habe, da ich dann keine weiteren Hostvariablen initialisieren muss und mir diese Lösung "eleganter" erscheint.

    Vielen Dank nochmal !!

Similar Threads

  1. AS Clause und Where Abfrage in SQL
    By Miller8888 in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-09-07, 17:30
  2. Einfache Abfrage in COBOL/400 mit EXEC SQL
    By AS400-Anfänger in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-06-06, 13:18
  3. Abfrage nach <> Ziffern in SQL
    By behmer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-05-06, 12:52
  4. sql abfrage
    By steven_r in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-05-06, 15:49
  5. SQL EXISTS Abfrage ausserhalb WHERE
    By mwithake in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 05-11-05, 09:15

Berechtigungen

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