Autor Beitrag
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 23.10.02 08:19 
Hi
Versuchs mal mit
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Do 24.10.02 12:22 
danke, aber dann bekomme ich in isql den fehler
unbekannter Token execute

Kannst du damit was anfangen?
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 24.10.02 12:55 
fast richtig! Man muss die Prozedur wie eine normale Tabelle behandeln!

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Do 24.10.02 16:27 
hallo,

danke für den hinweis.
ich habe das getestet, abe dann kommt die fehlermeldung unbekannter token select

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 25.10.02 10:16 
Kannst du doch auch benutzen. Nur eben nicht in einer Summierung eines Select-Statements.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Fr 25.10.02 12:01 
Damit müsste es doch gehen:
ausblenden 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:

ausblenden 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