Statistiken erstellen
-
Und wie mache ichd as bitte? Wie ich schon gesagt habe, dasist das erste mal das ich mit einem DBChart arbeite.
-
hm... naja, vlei so (keine Gewähr, hab lang nix mit SQL gemacht):
SELECT COUNT(Hersteller) AS Anzahl, Datum FROM Tabelle WHERE Hersteller = 'Sony' AND Datum BETWEEN '01.01.2005' AND '31.12.2005' GROUP BY Anzahl ORDER BY Datum ASCDann machste einen Doppelklick auf dein DBChart und weisst das Query unter Reihen, Datenquelle -> Datenmenge -> Dein Query wählen zu.
-
Fast richtig Sunday. Es muß nach Datum gruppiert werden, nicht nach Anzahl:
GROUP BY Datum
-
Die Select's funktionieren natürlich nur (besonders der Group-Teil auf Datum), wenn Du reine Datum-Werte hast oder bei Datetimes die Time-Werte "nullst".
z.B. so
CONVERT(datetime,FLOOR(CONVERT(float, DATUM)))
-
Wo schreibe ich denn diesen Quelltext rein???
-
na in dein Query!
BCB-Hilfe: TQuery-SQL-ExecSQL (Beispiel) schrieb:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("Delete from Country where Name = 'Argentina'");
Query1->ExecSQL(); // Open() für SELECT
-
Also bei mir klappt es nicht, hab alles so gemacht wie ihr es gesagt habt aber beim ausführen der query kommt bei mir eine Fehlermeldung und das Programm stürzt ab. Hab jetzt schon alles probiert aber es geht einfach nicht. Kann jemand vielleicht mir ein Beispielprogramm schicken oder so, wäre sehr dankbar.
-
Was hast Du wo hereingeschrieben und welche Fehlermeldung kommt?
-
Den Quelltext:
SELECT COUNT(Hersteller) AS Anzahl, Datum FROM Tabelle WHERE Hersteller = 'Sony' AND Datum BETWEEN '01.01.2005' AND '31.12.2005' GROUP BY Anzahl ORDER BY Datum ASChabe ich in die SQL geschrieben also in die Stringanweisungsliste.
Und den Quelltext:
Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("Delete from Country where Name = 'Argentina'"); Query1->ExecSQL(); // Open() für SELECThabe ich auf einen Button gelegt. Natürlich habe ich auch den Quelltext auf meine Bedürfnisse abgeänder und nicht 1zu1 übernommen.
Ich habe gerade eben auch geschaft das es soweit läuft, also es kommt keine Fehlermeldung mehr. Nur in dem DBChart wird nichts angezeigt. Könnt ihr mir sagen was noch fehlt oder was ich falsch gemacht habe?
-
Also, ich habe jetzt noch ein wenig rumprobiert und folgendes hinbekommen. Das DBChart zeigt jetzt EIN Datum an und die Anzahl aller Eintäge. Nur ich möchte ja das das DBChart alle Datume (sagt man das so?) und die jeweiligen Eintrage zu diesem Datum anzeigt. Anders gesagt: Ich habe in meiner Datenbank 5 Eintrage mit dem Hersteller "Sony" am 16.02.2006 und 1 Eintrag am 17.02.2006. In dem DBChart zeigt er aber 6 Einträge am 16.02.2006 an. Das heißt er addiert alle Einträge und zeigt nur ein Datum an. Wo liegt mein Fehler. Ist der Quelltext für die Query qirklich richtig???
-
Da wir nicht wissen, was genau in Deiner Query steht...
-
Dein Select ist falsch! Die gruppierst garantiert nicht nach dem Datum.
-
naja so weit ich mich noch erinnere, heisst BETWEEN soviel wie "von abc (inklusive) bis xyz (exklusive)", d.h. xyz wäre in der menge nicht mehr dabei, wenn das die begrenzung deiner suchabfrage wäre. kann auch sein, dass das von datenbank zu datenbank unterschiedlich ist.
kannst auch folgendes versuchen:
... WHERE Datum >= :DatumVon AND Datum <= :DatumBis ...// Datumswerte direkt übergeben (ohne Umformatierung) // -> Datumswerte werden vom User über 2 TDateTimePicker selektiert Query->ParamByName("DatumVon")->AsDateTime = DateTimePicker1->DateTime; Query->ParamByName("DatumBis")->AsDateTime = DateTimePicker2->DateTime;
-
An Joe_M: Steht doch oben was in meiner Query steht.
An caspar_louis: Und wie schreibe ich die Selectanweisung richtig?
-
Between ist inclusive, zumindest bei SQL-Server, wahrscheinlich aber überall.
-
PeterGabel schrieb:
Natürlich habe ich auch den Quelltext auf meine Bedürfnisse abgeänder und nicht 1zu1 übernommen.
Woher soll ich wissen, dass Du das nicht auch auf den SQL-SELECT beziehst?
Zum letzten Mal: Was genau steht in der Query als SELECT-Anweisung? Nicht ungefähr, sondern exakt!
Sunday schrieb:
naja so weit ich mich noch erinnere, heisst BETWEEN soviel wie "von abc (inklusive) bis xyz (exklusive)", d.h. xyz wäre in der menge nicht mehr dabei, wenn das die begrenzung deiner suchabfrage wäre.
BETWEEN ist inklusive der beiden Parameter.
-
okay. ich merk schon, dass ich nicht mehr ganz fit bin im SQL bereich.

-
Sunday schrieb:
okay. ich merk schon, dass ich nicht mehr ganz fit bin im SQL bereich.

Kommt wieder, wenn Du damit arbeiten mußt. Versprochen...

-
PeterGabel schrieb:
An Joe_M: Steht doch oben was in meiner Query steht.
An caspar_louis: Und wie schreibe ich die Selectanweisung richtig?
SELECT COUNT(Hersteller) as Anzahl, Datum
FROM Tabelle
WHERE Hersteller = 'Sony'
AND Datum BETWEEN '01.01.2005' AND '31.12.2005'
GROUP BY DATUM // nicht nach Anzahl
ORDER BY Datum ASCOder
SELECT COUNT(Hersteller) as Anzahl, Datum
FROM Tabelle
WHERE Hersteller = 'Sony'
AND Datum >= '01.01.2005'
AND Datum <= '31.12.2005'
GROUP BY DATUM
ORDER BY Datum ASCDabei solltest Du aber beachten, daß dass wirklich nur ein Bsp-SQL-String ist. Du solltest die variablen Werte (Hersteller,DatumVon,DatumBis) auch wirklich variabel halten und ggf. in die Parameter des Querys reinpacken. Dann mußt Du nicht bei jeder Wertänderung, den Query-SQL-String neu aufbauen.
P.S.: Je öfter ich es lese, desto mehr Rechtschreibfehler finde ich.
-
Wie gesagt, steht da oben aber hier bitte noch einmal:
SELECT COUNT(Hersteller) as Anzahl, Datum FROM Tabelle WHERE Hersteller = 'Sony' AND Datum BETWEEN '01.01.2005' AND '31.12.2005' GROUP BY Datum ORDER BY Datum ASC