AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

count mit 0

Ein Thema von p80286 · begonnen am 6. Nov 2015 · letzter Beitrag vom 10. Nov 2015
Antwort Antwort
Seite 2 von 2     12   
jobo

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

AW: count mit 0

  Alt 9. Nov 2015, 11:44
@jobo ist das eine Möglichkeit aus der Kiste "So geht's auch"? scheint mir ein bißchen Umständlich liefert aber das richtige Ergebnis.
Ja, wie Du festgestellt hast, es geht auch.
Der Grundgedanke ist: Wenn ich sowie alle "Abteilungen" oder was auch immer anzeigen muss(!), hab ich an der Stelle eh einen Fullscan (oder sowas in der Art, falls "alle Abteilungen" ein Zwischenergebnis aus einem View oder Subselect sind). Wenn das also stattfindet, kann ich die engine "unterwegs" an der Stelle direkt mitrechnen lassen, statt erneut diejenige Untermenge anzuflanschen und zu zählen, die mich am Ende interessiert.
So wird ein 2. Scan, Range/Hash was auch immer vermieden.

Ich hab mir nicht die Mühe gemacht, die Statements zu testen, aber auf die ein oder andere Art müssen auch die anderen Statements ihre Grundmenge irgendwo herbekommen und zwar unconditional und mglw auch ohne verfügbar Indizierung. Schau Dir den Ausführungsplan der Varianten an- falls es überhaupt eine Rolle spielt. Ich denke meine Variante dürfte da relativ übersichtlich sein.
Wenn Dein Originalstatement sehr komplex ist, sind die Unterschiede der Ausführungspläne ggF. schwer zu vergleichen, wenn dann noch die Datenmenge groß ist, bietet sich als erstes ein Blick auf die Laufzeit an. Das schnellste gewinnt.

Das Case When sieht natürlich nicht hübsch aus, die Lösung ist einfach straight forward. Die guten ins Töpfchen, die schlechten ..
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: count mit 0

  Alt 9. Nov 2015, 15:49
.. bietet sich als erstes ein Blick auf die Laufzeit an. Das schnellste gewinnt.
Jo, so sehe ich das auch erst einmal.
Was gewöhnungsbedürftig ist, daß auf den ersten Blick nicht gezählt wird was man zählen will. Da muß man sich erst einmal etwas bei denken

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#13

AW: count mit 0

  Alt 10. Nov 2015, 07:54
In meinen Tabellen habe ich selten eine 'Abteilung', sondern eigentlich immer nur einen FK auf eine separate Tabelle 'Abteilungen', das ist ja normal. Ergo habe ich bereits eine Tabelle aller Abteilungen.

Weiterhin habe ich 'Auswertungsgruppen'. Dort lege ich ab, welche Abteilungen (Produkte, Personen, egal) zusammengefasst werden sollen. So habe ich z.B. eine Auswertungsgruppe 'Alle aktiven Abteilungen', oder 'Meine Top-Produkte' oder 'Personen aus dem 3.Stock'.

Nun kann ich über diese Gruppen beliebige Auswertungen fahren, sodaß immer alle Mitglieder dieser Gruppe in den Auswertungen auftauchen, auch wenn noch keine Daten angefallen sind.

Code:
select A.Name,
       coalesce (sum (d.Irgendwas), 0) as Ergebnis
  from Abteilungsgruppe Ag
       join Abteilung A on Ag.AbteilungsID = A.ID
       left join Daten d on d.AbteilungsID = A.ID
 where d.Datum between :Start and :Ende
   and Ag.ID = 23 --  23 sei jetzt mal die GruppenID der Gruppe 'Alle aktiven Abteilungen'
Und nun kann ich einfach den Zeitraum und die Auswertungsgruppe parametrieren und dann habe ich einen Report, der mir für jeden beliebigen Zeitraum und jede beliebige Abteilungsgruppe eine Auswertung liefert.

Über Trigger in der Auswertungsgruppe kann ich zudem steuern, ob (und ggf das) eine Abteilung nur in einer Gruppe sein darf oder nicht.

Wenn ich dieses Pattern auf alle meine Daten lege, stellen sich mir diese Fragen hier gar nicht mehr, weil alle meine Reports automatisch schon all das anzeigen, was gewünscht ist. Und da die Auswertungsgruppen vom Kunden editierbar sind, kann er sich seine Abteilungsauswertungen auch beliebig zusammenstellen. Und ja: Natürlich gibt es noch Auswertungen je Tag und über alle Gruppen (Achtung! Wenn Gruppen nicht disjunkt sind, stimmt die Summe nicht).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:47 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