AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sum()-Daten aus 2 Tabellen in einer Query
Thema durchsuchen
Ansicht
Themen-Optionen

Sum()-Daten aus 2 Tabellen in einer Query

Ein Thema von hoika · begonnen am 20. Feb 2008 · letzter Beitrag vom 21. Feb 2008
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 08:09
Datenbank: FB • Version: 1.5 • Zugriff über: egal
Hallo #,

ich möchte die 2 Summen pro Projekt (Material, Zeit)
in einer Query ausgeben.
Bisher habe ich folgendes:

SQL-Code:
Select Sum(BillValue) As Value, 1 As Flag, Project.Id, Project.Number
From Bill
Join Project On Project.Id=Bill.ProjectId
Group By ProjectId, Project.Number

Union

Select Sum(ProjectTime) As Value, 2 As Flag, Project.Id, Project.Number
From ProjectTime
Join Project On Project.Id=ProjectTime.ProjectId
Group By ProjectId, Project.Number
Jetzt habe ich zwar beide Summen, die stehen aber untereinander.
Mit einem View und order by Number
(oder ab FB2 direkt mit select * from (<siehe oben>) order by number)
würde ich auch die Projekte untereinander haben.
Ich will aber nur eine Zeile pro Projekt.

Über eine SP könnte ich mir zuerst per "For Select Select Sum(BillValue)",
die Materialsummen der Projekte geben lassen,
dann für jedes Projekt die Zeitsummen ermitteln.
Was ist aber mit Projekten, die nicht in der Bill-Tabelle stehen.

OK, die könnte ich mir nachträglich auch noch holen.

Ist aber ziemlich viel Aufwand für so ein bissel Output.

Wie würdet ihr vorgehen.

FB2 steht beim Kunden erst mal nicht zur Diskussion
(er hat noch Programme laufen,, die maximal FB1.5 erlauben).


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 08:19
Ohne Gewähr, da aus dem Kopf dahergetippselt:
SQL-Code:
SELECT SUM(CASE B.BillValue WHEN NULL THEN 0 ELSE B.BillValue END) AS BValue,
SUM(CASE PT.ProjectTime WHEN NULL THEN 0 ELSE PT.ProjectTime END) AS PTime,
P.id, P.Number
FROM Project P
LEFT JOIN ProjectTime PT ON PT.ProjectId = P.Id
LEFT JOIN Bill B ON B.ProjectId = P.Id
GROUP BY P.Id, P.Number
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 09:27
Hallo,

unter FB1.5 meckert er das NULL im Case an,
unter FB2.0 nicht.

Dummerweise steht ausserdem die ProjectId nicht direkt in ProjectTime ;(

Ich habe das jetzt mit einer SP gemacht puhhhhh
Mal ausdrucken, wegpackne, falls doch auf FB2 gewechselt wird,
könnte man die SP ja ändern.

Danke trotzdem!


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 09:34
Funktioniert ... CASE WHEN B.BillValue is NULL THEN 0 ELSE B.BillValue END ... ?
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 10:23
Hallo,

ja, unter FB2.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 10:59
Und so?
SQL-Code:
SELECT SUM(CASE WHEN (B.BillValue IS NULL) THEN 0 ELSE B.BillValue END) AS BValue,
SUM(CASE WHEN (PT.ProjectTime IS NULL) THEN 0 ELSE PT.ProjectTime END) AS PTime,
P.id, P.Number
FROM Project P
LEFT JOIN ProjectTime PT ON PT.ProjectId = P.Id
LEFT JOIN Bill B ON B.ProjectId = P.Id
GROUP BY P.Id, P.Number
Laut dieser Seite sollte das gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 20. Feb 2008, 13:28
Hallo,

mit Klmmmern geht es jetzt schon mal weiter ...
Da ist aber noch eine andere Tabelle mit im Spiel,
muss ich heute abend mal basteln.

Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 21. Feb 2008, 01:04
Vielleicht so...

SQL-Code:
SELECT id, number, SUM(value) value
FROM (SELECT SUM(billvalue) AS value, 1 AS flag, p.id, p.number
      FROM bill x
      INNER JOIN project p
        ON p.id = x.projectid
      GROUP BY p.id, p.number

      UNION ALL

      SELECT SUM(projecttime) AS value, 2 AS flag, p.id, p.number
      FROM projecttime x
      INNER JOIN project p
        ON p.id = x.projectid
      GROUP BY p.id, p.number) x
GROUP BY id, number
Gruss
Thorsten
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 21. Feb 2008, 07:59
Hallo,

ja, union hatte ich auch schon drin,
die 2 Zeiten sollen aber nebeneinander stehen,
die XXX (aktuell SP) wird direkt aus Excel heraus ausgerufen,
ohne noch was daran zu machen.


Heiko
Heiko
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Sum()-Daten aus 2 Tabellen in einer Query

  Alt 21. Feb 2008, 20:01
Achso, nebeneinander...

SQL-Code:
SELECT p.id, p.number, billvalue, projecttime
FROM project p
LEFT JOIN (SELECT projectid AS id, SUM(billvalue) AS billvalue
           FROM bill
           GROUP BY projectid) a
  ON p.id = a.id
LEFT JOIN (SELECT projectid AS id, SUM(projecttime) AS projecttime
           FROM projecttime
           GROUP BY projectid) b
  ON p.id = b.id
Gruss
Thorsten
  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 09:06 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