AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL-Abfrage über mehrer Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Abfrage über mehrer Tabellen

Ein Thema von waldforest · begonnen am 30. Mär 2015 · letzter Beitrag vom 6. Apr 2015
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: SQL-Abfrage über mehrer Tabellen

  Alt 4. Apr 2015, 10:46
Hallo MKinzler

ich habe in einer ersten Abfrage nur die einzelnen Datensätze mit Umsatzwerte etc. aus einer Rechnungstabelle. Diese bringe ich im Anschluss in einem Grid zur Anzeige.

Auf Basis dieser Abfrage möchte ich eine Spaltensumme in einem GridFooter anzeigen und benötige die Summe, z.B. der Umsatzspalte.

Mir ist bewusst, dass die Abfrage im Speicher des Clients liegt,

Zur Summenbildung habe ich derzeit 2 Wege eingeschlagen.
1.) Neue Abfrage der Summen über die gesamte Tabelle
2.) Summenbildung nach erster Abfrage in einer separaten Proc

Ich suche halt nach ner Optimierung der Geschwindigkeit, beides funktioniert.
mfg wf

Geändert von waldforest ( 4. Apr 2015 um 11:10 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SQL-Abfrage über mehrer Tabellen

  Alt 4. Apr 2015, 12:06
Da sich die gewünschten Werte auf die gleichen Werte beziehen ( verschieden zusammengefasst) sollte eine Abfrage genügen. Einfach einmal durch die Datenmenge gehen und die Werte summieren.

Es gibt auch Grids, welche eine Summierung von sich aus können.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: SQL-Abfrage über mehrer Tabellen

  Alt 4. Apr 2015, 13:09
Von einem 2.schrittigen Verfahren würde ich dringend abraten, da ohne weiteres die Konstistenz der beiden Ergebnisse nicht gewahrt ist. Sprich die Summe, die im 2. Schritt abgefragt wird, basiert ggF. schon auf einer verlichen zum 1. Schritt geänderten Datenbasis. (Trifft u.U. in einem Einzelplatzsystem nicht zu)

In einer Abfrage kann man den Befehl "rollup" verwenden, der automatisch Gesamtsummen liefert. Das hat hier 2 Nachteile:
  • Unter Firebird ist "rollup" nicht verfügbar (kann aber nachgestellt werden mittels "Union")
  • Die Gesamtsumme wird in der Ergebnismenge als weitere Zeile dargestellt, was ggf. nicht den Layoutwünschen entspricht.
Das Verfahren dürfte dennoch am schnellsten sein (ob rollup oder rollup Emulation), aber je nach Prio eben nicht optimal.

Die naheliegendste Möglichkeit bleibt damit m.E. wie von Markus Kinzler beschrieben eine manuelle Aufsummierung oder ein Gridkomponente mit Summenfunktion.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: SQL-Abfrage über mehrer Tabellen

  Alt 4. Apr 2015, 14:15
Rollup würde ich aber eher mit einer SP lösen. Die Lösung über UNION wären ja 2 wieder 2 getrennte Abfragen ( allerdings auf den selben Datenstand)
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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