| Autor |
Beitrag |
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Di 22.10.02 18:43
Hallo
ich habe eine procedure get_min_val, welche zwei ints bekommt und das kleinere von beiden zurückliefert.
select g.nationalitaet,
sum( get_min_val('31.10.2002'- '01.10.2002', b.auszug_datum - b.einzug_datum)) as Tage
from belegungen b, gaeste g
where ((b.einzug_datum <= '31.10.2002') and ((b.auszug_datum >= '01.10.2002') OR (b.auszug_datum is null)))
and g.gaeste_key = b.gaeste_key
Group by g.nationalitaet
nun würde ich gerne dieses statement ausführen. Kann ich das und wenn ja wie? so gibt es den fehler unbekanntes symbol get_min_val
gruß
Ken
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mi 23.10.02 08:19
Hi
Versuchs mal mit
Quelltext 1: 2: 3: 4: 5: 6:
| select g.nationalitaet, sum( execute procedure get_min_val ('31.10.2002'- '01.10.2002'), (b.auszug_datum - b.einzug_datum)) as Tage from belegungen b, gaeste g where ((b.einzug_datum <= '31.10.2002') and ((b.auszug_datum >= '01.10.2002') OR (b.auszug_datum is null))) and g.gaeste_key = b.gaeste_key Group by g.nationalitaet |
Konnte ich nicht testen, müsste aber funktionieren.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
CenBells 
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Do 24.10.02 12:22
danke, aber dann bekomme ich in isql den fehler
unbekannter Token execute
Kannst du damit was anfangen?
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Do 24.10.02 12:33
Hm, ne...war nen Versuch wert
Ich hab das so allerdings auch noch nie gemacht. Da müsste ich auch erst mal damit experimentieren.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Do 24.10.02 12:55
fast richtig! Man muss die Prozedur wie eine normale Tabelle behandeln!
Quelltext 1: 2: 3: 4: 5: 6:
| select g.nationalitaet, sum( select [b]Ergebnis[/b] from get_min_val ('31.10.2002'- '01.10.2002'), (b.auszug_datum - b.einzug_datum)) as Tage from belegungen b, gaeste g where ((b.einzug_datum <= '31.10.2002') and ((b.auszug_datum >= '01.10.2002') OR (b.auszug_datum is null))) and g.gaeste_key = b.gaeste_key Group by g.nationalitaet |
Ergebnis ist in diesem Falle das Ausgabefeld der Prozedur.
Cu,
Udontknow
|
|
CenBells 
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Do 24.10.02 16:27
hallo,
danke für den hinweis.
ich habe das getestet, abe dann kommt die fehlermeldung unbekannter token select
Quelltext 1: 2: 3: 4: 5: 6:
| select g.nationalitaet, sum( select * from get_min_val ('31.10.2002'- '01.10.2002'), (b.auszug_datum - b.einzug_datum)) as Tage from belegungen b, gaeste g where ((b.einzug_datum <= '31.10.2002') and ((b.auszug_datum >= '01.10.2002') OR (b.auszug_datum is null))) and g.gaeste_key = b.gaeste_key Group by g.nationalitaet |
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Fr 25.10.02 06:44
Hi
ich hab gestern einige Zeit damit verbracht das auszutesten mit dem Ergebnis, dass ich kein Ergebnis habe.
Prozeduren, die aus einem Programm ausgerufen werden oder die direkt mit den Daten arbeiten sind kein Problem. Prozeduren die wie eine Funktion ein Ergebnis innerhalb eines Select-Statements zurückliefern machen die merkwürdigsten Sachen.
Ich denke, ich werde mich übers Wochenende mal näher mit den UDFs beschäftigen, denn das scheint mir der beste Lösungsansatz zu sein.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 25.10.02 08:14
Hmmm, kann gut sein, dass es so nicht funzt, ich benutze Prozedurergebnisse meist nur in der Where-Klausel, da funktioniert es dann aber auch hunderprozentig.
Überhaupt, warum machst du nicht für diese Berechnung eine Prozedur?
Cu,
Udontknow
|
|
CenBells 
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Fr 25.10.02 10:08
habe ja auch ein prozedur gemacht, aber ich dachte, so eine minimum von zwei werten funktion wäre richtig schick und könnte man oft mal gebrauchen
Gruß
Ken
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 25.10.02 10:16
Kannst du doch auch benutzen. Nur eben nicht in einer Summierung eines Select-Statements.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Fr 25.10.02 12:01
Damit müsste es doch gehen:
Quelltext 1: 2: 3: 4: 5:
| select g.nationalitaet, sum(v.Ergebnis) as Tage from belegungen b, gaeste g, get_min_val('31.10.2002'- '01.10.2002', b.auszug_datum - b.einzug_datum) v where ((b.einzug_datum <= '31.10.2002') and ((b.auszug_datum >= '01.10.2002') OR (b.auszug_datum is null))) and g.gaeste_key = b.gaeste_key Group by g.nationalitaet |
Zumindest funzt das so immer bei meinen SP.
Ach ja, besser ist aber:
Quelltext 1: 2: 3: 4: 5:
| select g.nationalitaet, sum(v.Ergebnis) as Tage from belegungen b join gaeste g ON g.gaeste_key = b.gaeste_key get_min_val('31.10.2002'- '01.10.2002', b.auszug_datum - b.einzug_datum) v where ((b.einzug_datum <= '31.10.2002') and ((b.auszug_datum >= '01.10.2002') OR (b.auszug_datum is null))) Group by g.nationalitaet |
|
|