AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben?

Ein Thema von BlueStarHH · begonnen am 19. Apr 2007 · letzter Beitrag vom 20. Apr 2007
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#1

SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben?

  Alt 19. Apr 2007, 17:15
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX
Momentan führe ich zwei sehr komplexe selects aus und stelle mit union die Summen dieser beiden Abfragen getrennt untereinander da. Nun möchte ich im Result noch eine dritte Zeile haben, die die Gesamtsumme beider Abfragen enthält. Ich könnte dies wie unten angegeben durch eine weitere Abfrage machen, die Abfrage 1 und 2 kombiniert und diese Gesamtsumme dann mit einem union anfügen. Das ist jedoch nicht gerade performant, da dann ja Abfrage 1 und 2 nochmal ausgeführt werden. Wie kaann ich also die Ergebnisse ganz einfach zusammenzählen, ohne erneut Abfragen zu müssen?


SQL-Code:
select sum(Betrag) from tabelle_a where xyz

union

select sum(Betrag) from tabelle_a where abc

union

select sum(Betrag) from tabelle_a where abc or xyz
Beispiel:
SQL-Code:
sum(Betrag)
100
 50
150
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 17:30
mach ein Upgrade auf FB2.0 und dann:
SQL-Code:
select sum from(
select sum(Betrag) from tabelle_a where xyz

union

select sum(Betrag) from tabelle_a where abc

union

select sum(Betrag) from tabelle_a where abc or xyz);
Markus Kinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 17:45
Zitat von mkinzler:
mach ein Upgrade auf FB2.0 und dann:
SQL-Code:
select sum( betrag) from(
select sum(Betrag) as Betrag from tabelle_a where xyz

union

select sum(Betrag) as betrag from tabelle_a where abc

union

select sum(Betrag) as betrag from tabelle_a where abc or xyz);
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 17:53
Du meinst wohl:
SQL-Code:
select sum(betrag) from(
select sum(Betrag) as Betrag from tabelle_a where xyz

union

select sum(Betrag) as betrag from tabelle_a where abc);
Das ist glaube ich nicht ganz das was ich wollte. Erhalte ich dadurch nicht nur eine einzige Summe? Ich möchte die zwei Summen der beiden Abfragen haben und eine Gesamtsumme.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 18:07
Man muss die Daten übrigens mit UNION ALL vereinigen. Wenn man nur mit UNION arbeitet,
werden Datensätze mit gleichem Inhalt ausgefiltert.
Zitat:
Ich möchte die zwei Summen der beiden Abfragen haben und eine Gesamtsumme.
Das lässt sich mit einer SQL-Abfrage nur schwer bewältigen:
SQL-Code:
select sum(Betrag) as Betrag from tabelle_a where xyz
union all
select sum(Betrag) as betrag from tabelle_a where abc)
union all
select sum(betrag) from(
select sum(Betrag) as Betrag from tabelle_a where xyz
union all
select sum(Betrag) as betrag from tabelle_a where abc)
Das sollte man besser Clientseitig ausrechnen und präsentieren.
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 18:09
SQL-Code:
select
    sum(b1.Betrag) as summe1,
    sum(b2.Betrag) as summe2,
    sum(b1.Betrag)+sum(b2.Betrag) as summe
from
    tabelle_a b1, tabelle_a b2
where
    b1. ... = abc and b2. ... = xyz;
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 20:57
Zitat von mkinzler:
SQL-Code:
select
    sum(b1.Betrag) as summe1,
    sum(b2.Betrag) as summe2,
    sum(b1.Betrag)+sum(b2.Betrag) as summe
from
    tabelle_a b1, tabelle_a b2
where
    b1. ... = abc and b2. ... = xyz;
Wenn ich das so mache, sind die Summen drastisch zu hoch. Mit meinen Beispieldaten sollte z.b. 2000 als Summe herauskommen. Es kommen aber über 400000 raus. Evtl. wird durch die Abfrage irgendwie das Kreuzprodukt oder ähnl. gebildet und das muss noch eleminiert werden? Die Abfrage läuft auch über 4 Minuten. Die Einzelabfragen sind drastisch schneller.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 21:01
Stimmt, man müßte Gruppieren
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 19. Apr 2007, 21:26
Zitat von mkinzler:
Stimmt, man müßte Gruppieren
Hast Du auch einen Tipp wie?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: Wie Summen zweier Abfragen als Gesamtsumme ausgeben

  Alt 20. Apr 2007, 06:33
Poste mal die Struktur der Datenbannk (Tabellen-Metadaten)
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 00:27 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