Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Probleme mit sum function in sql-Statement (https://www.delphipraxis.net/74894-probleme-mit-sum-function-sql-statement.html)

barnti 10. Aug 2006 11:47

Datenbank: Oracle • Version: 9 • Zugriff über: Hibernate

Probleme mit sum function in sql-Statement
 
Hallo,

ich habe mal wieder Probleme beim Verständnis einer Datenbankabfrage:

Code:
select
   persacct.code,
   emppersacct.nomDate,
   emppersacct.updTs,
   tcslogin.firstName,
   tcslogin.lastName,
   emppersacct.mi,
   sum(emppersacct.mi)
   
from
   EmpPersAcct emppersacct
   left join emppersacct.tcsLogin tcslogin
   inner join emppersacct.persAcct persacct
   
where
   persacct.code='URLAUB'
   and
   emppersacct.emp.empSk=-979941237706
Frage ich die Summe der Stunden emppersacct.mi mit ab, so bekomme ich eine Fehlermeldung "SQL-Grammar-Exception". Frage ich hingegen nur die Summe ab oder nur die einzelnen Spalten ohne Summe, so funktioniert das Statement.

Ich verstehe nicht warum ich an die normale Tablle mit den aufgeführten Spalten nicht eine weitere hinzufügen kann, in der jeweils die Summenstunden stehen? Kann mich jemand aufklären? Was ist das Problem?

mkinzler 10. Aug 2006 11:51

Re: Probleme mit sum function in sql-Statement
 
von welchem Typ ist emppersacct.mi ?

barnti 10. Aug 2006 11:53

Re: Probleme mit sum function in sql-Statement
 
Hi,
Zitat:

Zitat von mkinzler
von welchem Typ ist emppersacct.mi ?

BigDecimal

mkinzler 10. Aug 2006 12:08

Re: Probleme mit sum function in sql-Statement
 
Die art der Fehlermeldung irretiert mich etwas. das eine kommt beim genaueren Hinsehen nicht mehr:

da Sum eine Aggregat-Funktion ist bezieht sie sich immer auf eine Gruppe (ohne Gruppierung = all DS). man kann also immer entweder die Einzelwerte oder die Summe erhalten.

polondo 10. Aug 2006 12:15

Re: Probleme mit sum function in sql-Statement
 
hi,

du solltest bei dieser Abfrage ein GROUP BY verwenden.

Dies könnte z.b. so aussehen

SQL-Code:
select
   persacct.code,
   emppersacct.nomDate,
   emppersacct.updTs,
   tcslogin.firstName,
   tcslogin.lastName,
   emppersacct.mi,
   sum(emppersacct.mi) as summe
   
from
   EmpPersAcct emppersacct
   left join emppersacct.tcsLogin tcslogin
   inner join emppersacct.persAcct persacct
   
where
   persacct.code='URLAUB'
   and
   emppersacct.emp.empSk=-979941237706

GROUP BY
   persacct.code
versuchs einfach mal. ciao ;O) R.

barnti 10. Aug 2006 12:17

Re: Probleme mit sum function in sql-Statement
 
Hi mkinzler,

das heißt ich muss eine Gruppierung bilden, um beides zu erhalten?
Code:
select
   persacct.code,
   emppersacct.nomDate,
   emppersacct.updTs,
   tcslogin.firstName,
   tcslogin.lastName,
   emppersacct.mi,
   sum(emppersacct.mi)
   
from
   EmpPersAcct emppersacct
   left join emppersacct.tcsLogin tcslogin
   inner join emppersacct.persAcct persacct
   
where
   persacct.code='URLAUB'
   and
   emppersacct.emp.empSk=-979941237706
   
group by
   persacct.code,
   emppersacct.nomDate,
   emppersacct.updTs,
   tcslogin.firstName,
   tcslogin.lastName,
   emppersacct.mi
Gruppiere ich es so, bekomme ich nur die Summe der jeweiligen Gruppe. Lasse ich emppersacct.mi im Group by weg, bekomme ich wieder die gleiche Exception.

Was mache ich noch falsch? Wie gruppiere ich richtig, um das gewünschte Ergebnis zu erhalten?

polondo 10. Aug 2006 12:22

Re: Probleme mit sum function in sql-Statement
 
Mir fällt grade auf das Du das empersacct hier doppelt hast

SQL-Code:
from
   EmpPersAcct emppersacct
Hat das einen bestimmten Sinn?

TBx 10. Aug 2006 12:25

Re: Probleme mit sum function in sql-Statement
 
Zitat:

Zitat von barnti
Gruppiere ich es so, bekomme ich nur die Summe der jeweiligen Gruppe.

klahr, das ist der Sinn erd group by clause

Zitat:

Zitat von barnti
Wie gruppiere ich richtig, um das gewünschte Ergebnis zu erhalten?

hmm, ich dachte bisher, das sei das gewünschte Ergebnis. Wie soll das Ergebnis denn aussehen?

Gruß

onlinekater

TBx 10. Aug 2006 12:27

Re: Probleme mit sum function in sql-Statement
 
Zitat:

Zitat von polondo
Mir fällt grade auf das Du das empersacct hier doppelt hast

SQL-Code:
from
   EmpPersAcct emppersacct
Hat das einen bestimmten Sinn?

Das ist das Aliasing in SQL

Gruß

onlinekater

barnti 10. Aug 2006 12:40

Re: Probleme mit sum function in sql-Statement
 
Hi onlinekater,
Zitat:

Zitat von onlinekater
Wie soll das Ergebnis denn aussehen?

ich möchte die im Select aufgeführten Spalten + die Summe über die Spalte emppersacct.mi


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.
Seite 1 von 2  1 2      

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