AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie gruppiert summieren in Abhängikeit von einem Feld?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie gruppiert summieren in Abhängikeit von einem Feld?

Ein Thema von BlueStarHH · begonnen am 16. Jul 2016 · letzter Beitrag vom 17. Jul 2016
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 19:06
Hallo Herr Kollege,

da du keine Informationen zu den Namen deiner Tabellen angegeben hast, welche Namen hätte ich denn nehmen sollen?

Carl-Gustav-Günter-Seine-Frau-Ihre-Tabelle?

War mir aber zu lang zum tippen, also habe ich als Tabellennamen mal foo und bar gewählt. Du solltest deine Tabellen-Namen kennen. Wenn nicht, dann können wir dir gar nicht helfen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
864 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 19:10
Es ist mir schon klar, warum Du das gemacht hast Nur Du verwendest mehrere Platzhalter für mehrere Tabellennamen und ich habe aber nur eine Tabelle.

Wenn ich mir die Feldnamen anschaue ist foo mein Tabellenname (Betraege). "Bar" kann meine Tabelle (Betraege) nicht sein, denn z.B. "id" (Zeile 3 bar.id bei dir) gibt es dort nicht. In meiner Tabelle gibt es nur die Felder ID1 und ID2. Also was für "bar" eintragen?

Geändert von BlueStarHH (16. Jul 2016 um 19:18 Uhr)
  Mit Zitat antworten Zitat
jobo

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

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 19:35
Ich schätze mal, wenn Du nur eine Tabelle hast, ist die Möglichkeit zur Umbenennung recht übersichtlich.
Ich vermute, es ging bei der Namenswahl von SR eher um Symbolik.

Alternativ:
SQL-Code:
select id1undid2, sum(betrag) from (
       select id1 as id1undid2, betrag from foo
         union all
       select id2, -1*betrag from foo)
 group by id1undid2
Wenn Dein Statement eher mit großen Ergebnismengen verwendet wird, würde ich vielleicht eher meins nehmen, wenn es um bestimmte, feste ID geht eher das von SR. Kann aber auch eine schlechte Idee sein.
Gruß, Jo
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
864 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 19:50
Danke jobo, damit klappt es! Sir Rufos Code würde ich jedoch auch gerne austesten... Nur ich bekomme es einfach nicht hin, den zum laufen zu bekommen...
  Mit Zitat antworten Zitat
jobo

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

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 20:24
Ok, Du weißt, was ein Tabellenname ist? Und was ein Alias ist? Du hast nur eine Tabelle?
Ich bin jetzt kein Online Parser und kann Dir keine Zeilen und Spaltennummern mit Korrektur liefern.
Du könntest Helfenden die Macht geben, indem Du konkrete Angaben zu den Problemen lieferst.

Ersetze alle Tabellennamen in dem Statement durch Deinen Tabellennamen.
Vieleicht gibt es noch irgendwo einen Tippfehler oder was auch immer, probier es aus.
Am Ende ist die Frage, ob Du das Statement von SR verstehst. Wenn ja, kannst Du es korrigieren, wenn es nicht gelingt, frag hier mit Angabe der notwendigen Daten (Dein Tabellenname, Feldnamen, ..)und des resultierenden Fehlers.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 21:01
Obwohl ich gerade sehe, dass es bei meinem Statement zu doppelten Zählungen kommen kann.

Ein union ist da unverzichtbar.
SQL-Code:
select konto.id, sum( buch.haben ) - sum( buch.soll ) as saldo
from konto
left join (
  select id1 as id, betrag as haben, 0 as soll from buchung
  union
  select id2 as id, 0 as haben, betrag as soll from buchung ) as buch
  on buch.id = konto.id
group by konto.id
Hier mal ein SQLFiddle dazu
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
864 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 16. Jul 2016, 21:23
Danke, nun läuft es Mit nur einer Tabelle sieht es so aus:

Code:
select id, sum( haben ) - sum( soll ) as saldo
from
 (
  select id1 as id, betrag as haben, 0 as soll from buchung
  union
  select id2 as id, 0 as haben, betrag as soll from buchung
) as buch

group by id
Welcher Code ist nun schneller? Der hier von Sir Rufo oder der von jobo?
  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:24 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