![]() |
Re: [SQL] Problem mit doppelter Ergebnismenge
Liste der Anhänge anzeigen (Anzahl: 3)
Hi Igotcha!
Dein Problem laesst sich mit Hilfe 3 Views loesen: 1. VIEW1 : Summen pro Position aus der "DATEN_IST" Tabelle (daten_ist_summe_pro_position)
SQL-Code:
Ergebnis siehe Anhang: view1.jpg
SELECT position, sum(jan) AS jan0,
sum(feb) AS feb0, sum(mar) AS mar0, sum(apr) AS apr0, sum(mai) AS mai0, sum(jun) AS jun0, sum(jul) AS jul0, sum(aug) AS aug0, sum(sep) AS sep0, sum(okt) AS okt0, sum(nov) AS nov0, sum(dez) AS dez0 FROM daten_ist, positionen WHERE position=positionen.posid and pagid in ("PIM5231", "PIM5244") and positionen.pgid=2000 GROUP BY position; 2. VIEW2 : Summen pro Position aus der "DATEN_PROGNOSE" Tabelle (daten_prognose_summe_pro_position)
SQL-Code:
Ergebnis siehe Anhang: view2.jpg
SELECT position, sum(jan) AS jan0,
sum(feb) AS feb0, sum(mar) AS mar0, sum(apr) AS apr0, sum(mai) AS mai0, sum(jun) AS jun0, sum(jul) AS jul0, sum(aug) AS aug0, sum(sep) AS sep0, sum(okt) AS okt0, sum(nov) AS nov0, sum(dez) AS dez0, sum(jan_1) AS jan1, sum(feb_1) AS feb1, sum(mar_1) AS mar1, sum(apr_1) AS apr1, sum(mai_1) AS mai1, sum(jun_1) AS jun1 FROM daten_prognose, positionen WHERE position=positionen.posid and pagid in ("PIM5231", "PIM5244") and positionen.pgid=2000 GROUP BY position; 3. View3: Summen pro Position aus VIEW1 und VIEW2
SQL-Code:
Ergebnis siehe Anhang: view3.jpg
SELECT i.position, i.jan0 as jani,
i.feb0 as febi, i.mar0 as mari, i.apr0 as apri, i.mai0 as maii, i.jun0 as juni, i.jul0 as juli, p.aug0 as augp, p.sep0 as sepp, p.okt0 as oktp, p.nov0 as novp, p.dez0 as dezp FROM daten_ist_summe_pro_position AS i, daten_prognose_summe_pro_position AS p WHERE i.position=p.position; Viele Grüße Markus :gruebel: |
Re: [SQL] Problem mit doppelter Ergebnismenge
Hi Markus,
das sieht im Ergebnis schon gut aus :-) (wobei ich mich frage, wie im Bild 3 ein "apr0" zustande kommt) Auf Kostenstellenebene (also nur 1) erfolgt die Generierung meiner Ansicht (die ja auch funktioniert) in 1-2 Sekunden. Deine Lösung sieht mir da schon nach mehr aus. Nur, wie setze ich das performant im Programm um? Hättest Du da evtl. einen Codeschnipsel, wie man Views erzeugt und diese verwendet? Danke und Gruß Igotcha EDIT: Habe gerade gesehen, dass es das "CREATE"-Kommando erst seit 5.0.1 gibt und das ist ein aktuelles Snapshot Release - naja, mal updaten ;-) |
Re: [SQL] Problem mit doppelter Ergebnismenge
Hi Igotcha!
Leider habe ich kein Codeschnipsel, den Du als fertige Lösung verwendet könntest. Du kannst aber einfach jeweils eine TQery für jede SELECT-Anweisung erstellen, etwa so:
Delphi-Quellcode:
Dadurch erstellst du “Views”, die du weiter verarbeiten könntest.
...
Var ist_data: TQuery; prognose_data: TQuery; result_data: TQuery; ... begin ... ist_data.SQL.Clear; ist_data := TQuery.Create(self); ist_data.SQL.Add('select … '); ist_data.SQL.Add('from ist_data … '); ist_data.Prepare; ist_data.Open; ... prognose_data.SQL.Clear; prognose_data := TQuery.Create(self); prognose_data.SQL.Add('select … '); prognose_data.SQL.Add('from prognose_data … '); prognose_data.Prepare; prognose_data.Open; ... result_data.SQL.Clear; result_data := TQuery.Create(self); result_data.SQL.Add('select … '); result_data.SQL.Add('from ist_data, prognose_data … '); result_data.Prepare; result_data.Open; ... Und am Ende:
Delphi-Quellcode:
Kleine Unreinheit: "apr0" soll "apri" heißen (sorry). :oops:
...
ist _query.Close; ist _query.Destroy; prognose _query.Close; prognose _query.Destroy; result _query.Close; result_query.Destroy; ... Viele Grüße Markus :gruebel: |
Re: [SQL] Problem mit doppelter Ergebnismenge
Danke Dir.
Ich habe gerade die neueste mysql installiert und das "CREATE VIEW" funktioniert nun. Ich muss jetzt mal sehen, was performanter ist. Wie Du evtl. aus der Tabelle "positionen" sehen kannst, muß ich pro Sicht für ca. 20 Gruppen die Unterpositionen ermitteln - sprich als ca. 20 mal eben diese drei Schritte durchführen. Werde am Wochenende mal ausführlich testen. Gruß Igotcha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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