![]() |
Datenbank: BDE • Zugriff über: TQuery
Ergebnisse gruppieren?
Hey Leute!
Folgendes: Ich möchte verschiedene Ergebnisse meiner Querys gruppieren. Beispiel Lehrer A hat heute in der 2. und 4. Stunde Vertretung in einer beliebigen Klasse, Lehrer B in der 3. und Lehrer C in der 5. und 6. Nun möchte ich es so ausgegeben haben: Es betrifft: Lehrer A (2.4.), Lehrer B (3.), Lehrer C (5.6.) Dabei steht in der dbf in der Spalte 'WER' der Vertretungslehrer und in 'S' die Stunde. Erster Versuch zum Auslesen:
Delphi-Quellcode:
Query33.Close;
Query33.SQL.Text := 'SELECT * FROM "VT'+sj+'"'; Query33.SQL.Add('WHERE S NOT IN ("M","E","H") AND DATUM=:today'); Query33.SQL.Add('ORDER BY WER ASC, S ASC'); Query33.SQL.Add('GROUP BY WER'); Query33.ParamByName('today').Value := today; Query33.Open; Allerdings bekomm ich dann die Meldung: Zitat:
|
Re: Ergebnisse gruppieren?
Nimm das 'ORDER BY' mal raus bzw. pack es ans Ende. Denn erst wird gruppiert und dann soll das Ergebnis der Gruppierung sortiert werden.
Und, äh. die BDE sollte man nicht mehr verwenden. |
Re: Ergebnisse gruppieren?
Danke erstmal, nun erhalte ich allerdings den Fehler:
Zitat:
Ich habe alle nötigen Felder in den Query gepackt, daran kanns also nicht liegen. Die BDE muss ich leider verwenden, dass das Eingabeprogramm leider selbst noch auf der BDE läuft und ich nicht der dafür zuständige Entwickler bin. ;) |
Re: Ergebnisse gruppieren?
Dann müssen die Felder als Aggregat abgefragt werden
|
Re: Ergebnisse gruppieren?
So so..als Aggregat..
Das heißt im Klartext? :D |
Re: Ergebnisse gruppieren?
MIN(), MAX(), SUM(), AVG(), ...
|
Re: Ergebnisse gruppieren?
Mh...
Mir ist nur grad unklar, wie ich die damit gruppieren soll. Hast du dafür evtl. ein Beispiel? |
Re: Ergebnisse gruppieren?
Alle Felder, nach denen du nicht gruppierst.
|
Re: Ergebnisse gruppieren?
Ich soll also nach Feldern gruppieren, nach denen ich nicht gruppiere?! :wiejetzt:
|
Re: Ergebnisse gruppieren?
Wenn ich mir die Aufgabenstellung durchlese, frage ich mich, was das mit Gruppierung zu tun hat. Es scheint ja eher eine Konkatenation der Ergebnisse zu sein.
|
Re: Ergebnisse gruppieren?
Jedes Feld der Ergebnismenge muss entweder in der Gruppierung sein oder als Aggregat vorliegen
SQL-Code:
Es werden ja alle Datensätze die in der Gruppierung identisch sind zu einem Datensatz verschmolzen und deshalb müssen die anderen Werte ja zusammengefasst werden.
select
Datum, sum( Umsatz) as gesamt, avg(Umsatz) as Durschnitt, min(Umsatz) als Minimum, Max( Umsatz) as Maximum, count( id) als Anzahl from Umsaetze group by Datum; |
Re: Ergebnisse gruppieren?
Zitat:
|
Re: Ergebnisse gruppieren?
Nein eher durch Vereinigung (UNION)
|
Re: Ergebnisse gruppieren?
Gib' doch erst mal deine bisherigen Tabellen an. Zum Beispiel:
Code:
Du wirst sicher mehr als eine Tabelle brauchen. Deshalb musst du diese auch angeben:
Tabelle Lehrer:
IdLehrer | Name | Angestellt =============================== 1 | Müller | True 2 | Pechstein | False
Code:
So und jetzt musst du noch deine "Zieltabelle" angegeben; also die Datenmenge,
Tabelle Stundenplan:
IdPlan| WoTag|Stunde|Klasse|Fach ================================= 1| Mo | 1 | 7a |Mathe 2| Mo | 3 | 7a |Englisch die du erhalten willst. Das ist natürlich keine echte Tabelle, sondern das Wunschergebnis deiner Abfrage. Ohne diese Angaben, werdet ihr häufig an einander vorbeireden, vorallem weil du (Svenkan) noch nicht verstanden hast, was GROUP BY eigentlich bewirkt. |
Re: Ergebnisse gruppieren?
Hallo,
ich habe eine Tabelle, wo die Vertretungen gespeichert werden. Dort gibt es die Spalten.. S (Stunde) KLASSE WER (Vertretungslehrer) FUER (Fehlender Lehrer) FACH RAUM BEM_SCH BEM_LEH WERT BET_KLA IDENT Die Namen/Kürzel der Lehrer, sowie die Stundenpläne der Klassen stehen in seperaten Dateien und haben mit der Vertretungstabelle an sich nichts zutun. GROUP BY war auch, von mir aus gesehn, die momentan ansehnlichste Lösung. Wenn ihr dort hingehend bessere Vorschläge etc habt, ist das natürlich wunderbar. Man lernt ja schließlich nie aus. :) |
Re: Ergebnisse gruppieren?
Was Du bräuchtest, wäre etwas wie GROUP_CONCAT von MySQL, wenn ich mich nicht irre. Da es sich ja anscheinend um DBase handelt (ansonsten korrigiere mich), sehe ich da schwarz. Bliebe nur noch ein "Zusammenfrickeln" der Ergebnismenge am Frontend.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 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 by Thomas Breitkreuz