Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL-Abfrage Interbase 6.0 (https://www.delphipraxis.net/163977-sql-abfrage-interbase-6-0-a.html)

hirsch 24. Okt 2011 12:21

Datenbank: Interbase • Version: 6 • Zugriff über: DBX

SQL-Abfrage Interbase 6.0
 
Liebes Forum,
ich traue mich schon garnichtmehr zu fragen, ich habe ein Verständnisproblem:
Die Abfrage:

SELECT
art_num,
art_grp,
werkzg_nr
from WZG_HIST

where (werkzg_nr>0) and (intervall>0)
group by werkzg_nr;

bringt den Fehler:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
invalid column reference.

Was invalid column reference ist ist mir klar, aber diese Spalten sind vorhanden!!
Die Felder werkzg_nr und intervall sind vom Typ DOUBLE PRECISION.
Ich kapier es einfach nicht.

DeddyH 24. Okt 2011 12:26

AW: SQL-Abfrage Interbase 6.0
 
Ich verstehe Deine angedachte Gruppierung nicht. Interbase scheint das genauso zu gehen. Wie soll das Ergebnis denn beispielhaft aussehen?

hirsch 24. Okt 2011 12:44

AW: SQL-Abfrage Interbase 6.0
 
Hallo DeddyH
ich wollte anzeigen:
für jedes Aufkommen einer werkzg_nr die Summe der Intervalle.
Die Abfrage sieht jetzt so aus, funktioniert genauso wenig, mit der gleichen Meldung:
SELECT
art_num,
art_grp,
werkzg_nr,
sum(intervall)
from WZG_HIST

where (werkzg_nr>0) and (intervall>0)
group by werkzg_nr;

DeddyH 24. Okt 2011 12:47

AW: SQL-Abfrage Interbase 6.0
 
Du musst auch alle Nicht-Aggregatfelder in die Gruppierung aufnehmen.
SQL-Code:
SELECT
  art_num,
  art_grp,
  werkzg_nr,
  SUM(intervall)
FROM
  WZG_HIST
WHERE
  werkzg_nr > 0 AND intervall > 0
GROUP BY
  art_num, art_grp, werkzg_nr;

hirsch 24. Okt 2011 13:06

AW: SQL-Abfrage Interbase 6.0
 
Delphi-Quellcode:
var sql :String;
begin
  with Datamodul.DataModule1 do
  begin
    if SQLDSWHis.active= True then SQLDSWHis.active:=False;
    if CDSWHis.active=True then CDSWHis.active:=False;
    msql:=SQLDSWHis.CommandText; //Aktive Abfrage merken
    sql:='SELECT WERKZG_NR, ART_NUM, sum(INTERVALL) FROM WZG_HIST WHERE (WERKZG_NR > 0) AND (INTERVALL > 0) ORDER BY ART_NUM group by art_num, werkzg_nr;';
    SQLDSWHis.CommandText:=sql;
    CDSWHis.active:=True;
    SQLDSWHis.active:=True;
    showmessage(intToStr(CDSWHis.RecordCount));
  end;
Vielen Dank, Deine Abfrage funktionierte im IBExpert.
Im Programmcode bringt er aber jetzt :
SQL-Server Fehler Token unknown line1, char 117 group

Wieso kennt er group nicht?
Oder geht das nicht...

daywalker9 24. Okt 2011 13:13

AW: SQL-Abfrage Interbase 6.0
 
ORDER BY kommt nach GROUP BY

DeddyH 24. Okt 2011 13:15

AW: SQL-Abfrage Interbase 6.0
 
Keine Ahnung, für mich sieht die Abfrage in Ordnung aus.

[edit] Na klar, falsche Reihenfolge. [/edit]

p80286 24. Okt 2011 13:16

AW: SQL-Abfrage Interbase 6.0
 
und dies ist auch etwas besser:
Delphi-Quellcode:
if SQLDSWHis.active then SQLDSWHis.active:=False;
if CDSWHis.active then CDSWHis.active:=False;
Und muß das Semikolon am Ende sein?

gruß
K-H

GHorn 24. Okt 2011 13:40

AW: SQL-Abfrage Interbase 6.0
 
und zwischen group by... und order by... noch ein Komma.


/Edit/ nehme alles zurück - war abgelenkt und hab nicht
richtig hingesehen. DeddyH hat recht. Ist blödsinn von mir /Edit/

DeddyH 24. Okt 2011 13:42

AW: SQL-Abfrage Interbase 6.0
 
Zitat:

Zitat von GHorn (Beitrag 1132236)
und zwischen group by... und order by... noch ein Komma.

:?: Wie meinst Du das?


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