![]() |
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:
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.
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 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? |
Re: Probleme mit sum function in sql-Statement
von welchem Typ ist emppersacct.mi ?
|
Re: Probleme mit sum function in sql-Statement
Hi,
Zitat:
|
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. |
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:
versuchs einfach mal. ciao ;O) R.
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 |
Re: Probleme mit sum function in sql-Statement
Hi mkinzler,
das heißt ich muss eine Gruppierung bilden, um beides zu erhalten?
Code:
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.
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 Was mache ich noch falsch? Wie gruppiere ich richtig, um das gewünschte Ergebnis zu erhalten? |
Re: Probleme mit sum function in sql-Statement
Mir fällt grade auf das Du das empersacct hier doppelt hast
SQL-Code:
Hat das einen bestimmten Sinn?
from
EmpPersAcct emppersacct |
Re: Probleme mit sum function in sql-Statement
Zitat:
Zitat:
Gruß onlinekater |
Re: Probleme mit sum function in sql-Statement
Zitat:
Gruß onlinekater |
Re: Probleme mit sum function in sql-Statement
Hi onlinekater,
Zitat:
|
Re: Probleme mit sum function in sql-Statement
Wie gesagt bekommst du das nicht in einer einfachen Abfrage. wäre mit einem join oder ner SP möglich.
|
Re: Probleme mit sum function in sql-Statement
Hi,
Zitat:
|
Re: Probleme mit sum function in sql-Statement
du könntest zur jeder Zeile den Summenwert hinzujoinen. Oder 2halt 2 unterschiedliche Abfragen verwenden.
|
Re: Probleme mit sum function in sql-Statement
Hallo barnti,
deine Abfrage ist mir unverständlich. Das liegt vielleicht an Oracle... Aber müssen nicht die JOINs mit der Haupttabelle verbunden werden? Und dann die Aliase, mach dir das Leben doch nicht so schwer. Nimm kürze und einfachere, dafür sind sie da.
SQL-Code:
Wie werden die Tabellen miteinander verbunden?
SELECT c.code,
a.nomDate, a.updTs, b.firstName, b.lastName, a.mi, SUM(a.mi) FROM empPersAcct a LEFT JOIN tcsLogin b ON ??? INNER JOIN persAcct c ON ??? WHERE c.code = 'URLAUB' AND a.emp.empSk = -979941237706 ^-- ??? Warscheinlich bin ich nur zu unwissend in Bezug auf Oracle. Gruss Thorsten |
Re: Probleme mit sum function in sql-Statement
Hallo Thorsten,
ich frage die Datenbank über Hibernate (HQL) ab. Daher diese Syntax. Ja, die Aliase sind etwas lang aber bei langen Abfragen wenigstens lesbar. Gibts da nun noch eine Möglichkeit oder muss ich das in mehreren einzelnen Abfragen lösen? |
Re: Probleme mit sum function in sql-Statement
Hallo bartni,
ich versuche es einfach nochmal...
SQL-Code:
???: Hier muss die Verbindung zur aktuellen Zeile in der äußeren EmpPersAcct Tabelle hergestellt werden.
SELECT
persacct.code, emppersacct.nomDate, emppersacct.updTs, tcslogin.firstName, tcslogin.lastName, emppersacct.mi, (SELECT SUM(emppersacct.mi) FROM EmpPersAcct WHERE ???) AS summe FROM EmpPersAcct emppersacct LEFT JOIN emppersacct.tcsLogin tcslogin INNER JOIN emppersacct.persAcct persacct WHERE persacct.code = 'URLAUB' AND emppersacct.emp.empSk = -979941237706 Da ich deine Datenbankbeziehungen nicht kenne, kann ich an der Stelle nicht weiter helfen. Welche Spalte(n) ist/sind den der/die Primarykey(s) in EmpPersAcct? Eine Alternative wäre noch ein zweiter LEFT JOIN, in dem die Summen gebildet werden. Aber mit deinen komischen JOIN-Strukturen komme ich nicht klar, sorry. Gruss Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:23 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-2025 by Thomas Breitkreuz