Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler in der Formel (https://www.delphipraxis.net/84085-fehler-der-formel.html)

cugar 11. Jan 2007 06:49

Datenbank: InterBase • Version: 7.5 • Zugriff über: Delphi

Fehler in der Formel
 
Moin, moin!
Mein SQL wird gerade fleißig geübt, was ist bitte in der Formel falsch?

select SUM("RECH_DETAIL"."Preis_NETTO") AS "SUMME","RECHNUNG"."KD_ID" FROM RECHNUNG,RECH_DETAIL
WHERE "RECHNUNG"."Re_Nr"="RECH_DETAIL"."ID"
GROUP BY "RECH_DETAIL"."Re_ID"

Nehme ich "RECHNUNG"."KD_ID" raus ist alles ok, mit "RECHNUNG"."KD_ID" gibt's eine Fehlermeldung:

"Error at line 1
Dynamic SQL Error
SQL error code = -104
invalid column reference"

Viele Dank!
cugar

mkinzler 11. Jan 2007 06:52

Re: Fehler in der Formel
 
Jedes Feld in der Anzeigeliste muß entweder ein Aggregat sein oder Teil der Gruppierungsbedingung sein.

cugar 11. Jan 2007 06:58

Re: Fehler in der Formel
 
Danke für die rasche Antwort!
Wie kann ich dann es lösen?
Es ist so:

In der DBGrid sollen alle Rechnungen angezeigt werden mit RechNr,Kd_Nr usw. und dazu die Summe aller Preise in der Tabelle: RechnungsDetails Feld: "Preis_NETTO"

mkinzler 11. Jan 2007 07:01

Re: Fehler in der Formel
 
Entweder

SQL-Code:
select SUM("RECH_DETAIL"."Preis_NETTO") AS "SUMME","RECHNUNG"."KD_ID", MIN( "RECHNUNG"."Re_Nr") as "Re_Nr" FROM RECHNUNG,RECH_DETAIL
WHERE "RECHNUNG"."Re_Nr"="RECH_DETAIL"."ID"
GROUP BY "RECH_DETAIL"."Re_ID"
oder

SQL-Code:
select SUM("RECH_DETAIL"."Preis_NETTO") AS "SUMME","RECHNUNG"."KD_ID" FROM RECHNUNG,RECH_DETAIL
WHERE "RECHNUNG"."Re_Nr"="RECH_DETAIL"."ID"
GROUP BY "RECH_DETAIL"."Re_ID", "RECHNUNG"."Re_Nr"

cugar 11. Jan 2007 07:07

Re: Fehler in der Formel
 
Leider nicht, in beiden gibt's die selbe Fehlermeldung, nehme ich "RECHNUNG"."KD_ID" raus ist alles ok

mkinzler 11. Jan 2007 07:14

Re: Fehler in der Formel
 
Es hätte eher so
SQL-Code:
select SUM("RECH_DETAIL"."Preis_NETTO") AS "SUMME", MIN("RECHNUNG"."KD_ID") as "KD_ID" FROM RECHNUNG, RECH_DETAIL
WHERE "RECHNUNG"."Re_Nr"="RECH_DETAIL"."ID"
GROUP BY "RECH_DETAIL"."Re_ID"
lauten müßen.

Man könnte auch einen expliziten join nehmen:

SQL-Code:
select
    SUM(d."Preis_NETTO") AS "SUMME",
    MIN(r."KD_ID") as "KD_ID"
FROM
    RECH_DETAIL d join RECHNUNG r on r."Re_Nr"=d."ID"
GROUP BY
    d."Re_ID"

cugar 11. Jan 2007 07:19

Re: Fehler in der Formel
 
Gott segne dich! PERFEKT!
Auf diese Weise kann ich die anderen Spalten mit einbeziehen!

Vielen Dank
cugar

mkinzler 11. Jan 2007 07:21

Re: Fehler in der Formel
 
Du kannst natürlich auch die felder mit in die GROUP BY aufnehmen, den ein solches Dummy-Aggregat funktioniert nicht mit allen Feldtypen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 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