Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage als SQL-Statement (https://www.delphipraxis.net/96735-abfrage-als-sql-statement.html)

HolgerCW 30. Jul 2007 11:01

Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE

Abfrage als SQL-Statement
 
Hallo zusammen,

kriegt es hier jemand hin sowas:

Delphi-Quellcode:
if Query['DRUCKLITERPRODUKT'] = 'PS x V' then
begin
 if (Query['PS_X'] >= Query['KATART1V']) AND (Query['PS_X'] <= Query['KATART2V']) then Query['KATEGORIE_X'] := 'Art.3, Abs.3';
 if (Query['PS_X'] >= Query['KAT11V']) AND (Query['PS_X'] <= Query['KAT12V']) then Query['KATEGORIE_X'] := 'I';
 if (Query['PS_X'] >= Query['KAT21V']) AND (Query['PS_X'] <= Query['KAT22V']) then Query['KATEGORIE_X'] := 'II';
 if (Query['PS_X'] >= Query['KAT31V']) AND (Query['PS_X'] <= Query['KAT32V']) then Query['KATEGORIE_X'] := 'III';
 if (Query['PS_X'] >= Query['KAT41V']) AND (Query['PS_X'] <= Query['KAT42V']) then Query['KATEGORIE_X'] := 'IV';
end
else
begin
 if (Query['PS_X'] >= Query['KATART1DN']) AND (Query['PS_X'] <= Query['KATART2DN']) then Query['KATEGORIE_X'] := 'Art.3, Abs.3';
 if (Query['PS_X'] >= Query['KAT11DN']) AND (Query['PS_X'] <= Query['KAT12DN']) then Query['KATEGORIE_X'] := 'I';
 if (Query['PS_X'] >= Query['KAT21DN']) AND (Query['PS_X'] <= Query['KAT22DN']) then Query['KATEGORIE_X'] := 'II';
 if (Query['PS_X'] >= Query['KAT31DN']) AND (Query['PS_X'] <= Query['KAT32DN']) then Query['KATEGORIE_X'] := 'III';
 if (Query['PS_X'] >= Query['KAT41DN']) AND (Query['PS_X'] <= Query['KAT42DN']) then Query['KATEGORIE_X'] := 'IV';
end;
in ein SELECT einer SQL-Abfrage einzubinden ?

Gruss

Holger

mkinzler 30. Jul 2007 11:02

Re: Abfrage als SQL-Statement
 
Oracle sollte Derived Tables unterstützen.

SQL-Code:
select ... from (select ...) where ...;

HolgerCW 30. Jul 2007 11:11

Re: Abfrage als SQL-Statement
 
OK,

und wie mache ich das mit den grösser/gleich - Abfragen ?

Gruss

Holger

mkinzler 30. Jul 2007 11:31

Re: Abfrage als SQL-Statement
 
In der where Bedingung der äußeren Abfrage.

HolgerCW 30. Jul 2007 12:10

Re: Abfrage als SQL-Statement
 
Hi,

habe mir hier mal eine kleine Version gebastelt. Jetzt kommt die Fehlermeldung: 'Zu viele Werte'

Delphi-Quellcode:
SELECT SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER, SYSDBP.DBP_LEISTUNGSWERTE.DRUCKSTUFE DS, SYSDBP.DBP_LEISTUNGSWERTE.VOLUMENNENNWEITE VN,

(SELECT KATEGORIE, MIN_DN, MAX_DN FROM SYSDBP.DBP_KATEGORIE
WHERE MIN_DN >= (DS * VN) AND MAX_DN <= (DS * VN))

FROM SYSDBP.DBP_LEISTUNGSWERTE
WHERE ANLAGENNUMMER = 4000003734
Was ist falsch ?

Gruss

Holger

omata 30. Jul 2007 23:51

Re: Abfrage als SQL-Statement
 
Hallo HolgerCW,

vielleicht so...
SQL-Code:
SELECT
  CASE WHEN druckliterprodukt = 'PS x V'
    THEN
      CASE
        WHEN ps_x >= katart1v AND ps_x <= katart2v THEN 'Art.3, Abs.3'
        WHEN ps_x >= kat11v  AND ps_x <= kat12v  THEN 'I'
        WHEN ps_x >= kat21v  AND ps_x <= kat22v  THEN 'II'
        WHEN ps_x >= kat31v  AND ps_x <= kat32v  THEN 'III'
        WHEN ps_x >= kat41v  AND ps_x <= kat42v  THEN 'IV'
      END
    ELSE
      CASE
        WHEN ps_x >= katart1dn AND ps_x <= katart2dn THEN 'Art.3, Abs.3'
        WHEN ps_x >= kat11dn  AND ps_x <= kat12dn  THEN 'I'
        WHEN ps_x >= kat21dn  AND ps_x <= kat22dn  THEN 'II'
        WHEN ps_x >= kat31dn  AND ps_x <= kat32dn  THEN 'III'
        WHEN ps_x >= kat41dn  AND ps_x <= kat42dn  THEN 'IV'
      END
  END AS kategorie_x
FROM tabelle
Gruss
Thorsten

HolgerCW 31. Jul 2007 09:21

Re: Abfrage als SQL-Statement
 
Ja fantastsich,

das klappt.

Danke und Gruss

Holger

HolgerCW 1. Aug 2007 09:58

Re: Abfrage als SQL-Statement
 
Hallo nochmal,

wie kann ich den Code erweitern, das
sowas raus kommt:

Delphi-Quellcode:
SELECT
  CASE WHEN druckliterprodukt = 'PS x V'
    THEN
      CASE
        WHEN ps_x >= katart1v AND ps_x <= katart2v THEN kategorie_x = 'Art.3, Abs.3' AND Kategorie_y = 'BlaBla'
        WHEN ps_x >= kat11v  AND ps_x <= kat12v  THEN kategorie_x = 'I' AND Kategorie_y = 'BlaBla2'
      END
    ELSE
      CASE
        WHEN ps_x >= katart1dn AND ps_x <= katart2dn THEN kategorie_x = 'Art.3, Abs.3' AND Kategorie_y = 'BlaBla'
        WHEN ps_x >= kat11dn  AND ps_x <= kat12dn  THEN kategorie_x = 'I' AND Kategorie_y = 'BlaBla'
      END
  END AS kategorie_x, Kategorie_y
FROM tabelle
So wie oben wird es nicht klappen. Ich hoffe nur das Du weisst, was ich meine.

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz