Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Group by "Datum" Problem (https://www.delphipraxis.net/155041-group-datum-problem.html)

cugar 6. Okt 2010 05:34

Datenbank: InterBase • Version: 7.5 • Zugriff über: Delphi 2006 prof.

Group by "Datum" Problem
 
Hi,
bin gerade am Suchen und finde keine Lösung für mein Problem.
Meine Tabelle enthält u.a. folgendes:

DOSENMENGE SNH_DATUM
15 15.08.2010
24 25.08.2010

11 05.09.2010

Jetzt möchte ich es nach Monaten gruppieren, InterBase meldet leider nur Fehler.

SELECT
SUM(SNH_DOSENMENGE) as DOSENMENGE, Extract (MONTH from SNH_DATUM) as MONAT
FROM SNACK_HAUPT
GROUP BY MONAT <- Fehler: was ist MONAT?
..oder GROUP BY Extract (MONTH from SNH_DATUM) <- Extract unerlaubt
Die beiden Sachen scheinen in anderen Datenbanken zu funktionieren, wie muss man es in InterBase machen??

Ich möchte wissen, wie viele Dosen in einzelnen Monaten (oder Jahren) verkauft wurden.

Viele Grüsse

Andreas Schilling 6. Okt 2010 06:33

AW: Group by "Datum" Problem
 
Ich habe das Problem bisher immer mit dem Umweg über einen View gelöst. Bei dem Select auf den View kannst du dann dein group by Monat machen.

alzaimar 6. Okt 2010 06:40

AW: Group by "Datum" Problem
 
Oder so
SQL-Code:
SELECT
     SUM(SNH_DOSENMENGE) as DOSENMENGE,
     Extract (MONTH from SNH_DATUM) as MONAT
FROM SNACK_HAUPT
GROUP BY Extract (MONTH from SNH_DATUM)

cugar 6. Okt 2010 06:46

AW: Group by "Datum" Problem
 
Danke, versuche es über View.

An alzaimar:
bzg. GROUP BY Extract (MONTH from SNH_DATUM)

Wie ich bereits oben vermerkt habe: Extract hinter Group by führt zum Fehler bei InterBase

marabu 6. Okt 2010 07:53

AW: Group by "Datum" Problem
 
Hallo cugar,

alzaimar meinte bestimmt:

SQL-Code:
SELECT
     EXTRACT (MONTH FROM snh_datum) AS monat,
     SUM(snh_dosenmenge) AS dosenmenge,
FROM snack_haupt
WHERE EXTRACT (YEAR FROM snh_datum) = :year
GROUP BY 1
ORDER BY 1 DESC
Für Auswertungen greifst Du aber trotzdem über eine VIEW auf die Daten zu - Du musst dann bei Änderungen an der Basis-Tabelle nur die View anpassen.

Grüße vom marabu

cugar 6. Okt 2010 08:18

AW: Group by "Datum" Problem
 
Geht auch nicht, Token Unknow: 1
Weiß manche Datenbanken erlauben es mit Zahlen zu machen, Interbase will nicht :)

Ich verwende DBChart und hab da es angebunden. Bei DBChart kann man es auswählen wie es gruppiert werden soll (Jahr, Monat, Woche usw), verändert DBChart für sich irgendwie die SQL-Anweisung(denn da wird es richtig angezeigt)?

mkinzler 6. Okt 2010 08:28

AW: Group by "Datum" Problem
 
Welches 1 mahnt er an?
@Achim: Welcome back!

cugar 6. Okt 2010 08:31

AW: Group by "Datum" Problem
 
Zeile 6
GROUP BY 1

mkinzler 6. Okt 2010 08:44

AW: Group by "Datum" Problem
 
Versuch es mal mit einer Derived Table:
SQL-Code:
SELECT
    s.monat,
    Sum(s.snh_dosenmenge) as dosenmenge
from
    (
        select    
            EXTRACT (MONTH FROM snh_datum) AS monat,
            EXTRACT (YEAR FROM snh_datum) as jahr
            snh_dosenmenge
        FROM
            snack_haupt) s
WHERE
    s.jahr = :year
GROUP BY
    monat
ORDER BY
    Monat DESC;

marabu 6. Okt 2010 08:52

AW: Group by "Datum" Problem
 
Tatsächlich unterstützt auch das aktuelle Interbase noch keine Spaltennummern in der GROUP BY Klausel, wohl aber in der ORDER BY Klausel:

Zitat:

order_list =
{col | int} [COLLATE collation]
[ASC[ENDING] | DESC[ENDING]]
[, order_list ...]
Schade eigentlich.

@Markus: :thumb:

cugar 6. Okt 2010 09:12

AW: Group by "Datum" Problem
 
Token Unknow: Select (Zeile 6)

Interbase erlaubt soviel ich weiß nur zusätzliche selects nach WHERE.
Frag mich manchmal ob ich mir die richtige datenbank ausgesucht habe...

mkinzler 6. Okt 2010 09:17

AW: Group by "Datum" Problem
 
Wäre FireBird eine Option?

DeddyH 6. Okt 2010 09:28

AW: Group by "Datum" Problem
 
Ich kann kaum glauben, dass Interbase so schlecht sein soll :shock:

cugar 6. Okt 2010 09:32

AW: Group by "Datum" Problem
 
Keine Ahnung... bin von Delphi's BDE weg und dachte, mache nichts falsch und nehme wieder was vom Borland.

Ich sag nicht das interBase sooo schlecht sein soll, dazu fehlt mir noch an Erfahrung, lese aber nur wie andere User Ihre Probleme lösen können und ich kann davon nie was (oder selten) anwenden. event. sind andere Datenbanken etwas weiter und quittieren nicht immer alles mit: Token Unknow (Scherz)

Werde gleich googeln wie FireBird so im Vergleich ist und ob die Umstellung für mich neue Welt bedeutet :)

mkinzler 6. Okt 2010 09:37

AW: Group by "Datum" Problem
 
FireBird ist der OpenSource Bruder von Interbase. Hat die gleiche Codebase (IB6), von der sich die beiden Systeme nun auseinander entwickeln.

cugar 6. Okt 2010 09:42

AW: Group by "Datum" Problem
 
Hört sich gut an, alles also ähnlich.
Kann man (muss man) auch Delphi-Komponenten erwerben, so ähnlich wie die InterBase-Kompos oder funktionieren die alten immer noch?

mkinzler 6. Okt 2010 09:44

AW: Group by "Datum" Problem
 
Grundsätzlich funktionieren die IBX Komponenten, besser sind aber welche, die FireBird im Speziellen unterstützen wie z.B. IBDAC, FIBPlus, UIB o.ä.

cugar 6. Okt 2010 09:59

AW: Group by "Datum" Problem
 
IBDAC scheinen preislich noch ok zu sein Standard für 99 eur und 149 für prof.
Brauche sicher die Prof.Version um zusätzlich von meinem Prog. aus die Datenbank nach Benutzerdaten abfragen zu können, dh. Rolles, Benutzername und Passwort oder auch die Datenbank einfach nur sichern

Die FIBPlus-Kompos liegen bei 299 $.

mkinzler 6. Okt 2010 10:00

AW: Group by "Datum" Problem
 
Beiden Standard fehlen m.W. nur die Sourcen (habe Pro)
Lade dir mal die Trialversion herunter und Teste diese.

cugar 6. Okt 2010 10:08

AW: Group by "Datum" Problem
 
Hab mal hier beide Versionen gefunden.
http://www.devart.com/ibdac/editions.html

Vor der installation von Firebird, muss die InterBase weg?

mkinzler 6. Okt 2010 10:13

AW: Group by "Datum" Problem
 
Jein, du kannst FireBird auch auf einen abweichenden Port installieren ( Standradmässig wird ja auch 3050 verwendet)

cugar 6. Okt 2010 17:19

AW: Group by "Datum" Problem
 
Ok, mache ich. Danke für die Hilfe :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.

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