Frage zur Aggregatfunktionen

19/06/2009 - 13:01 von Christoph Michalski | Report spam
Hallo,
ich schildere meine Frage am besten gleich an einem Beispiel:
es geht um eine Röntegenabteilung mit mehreren Arbeitsplàtze, die in einer
Datenbanktabelle geseichert sind: AP_ID = 1, AP_ID = 2 ... etc.
An jedem Arbeitsplatz wird unterchiedliche Anzahl von Untersuchung
durchgeführt.
Diese Untersuchungen werden zuerst angemeldet, dann durchgefüht und
anschließend augewertet, was in weiteren Spalten der Tabelle dokumentiert
wird.
Nun möchte ich per SQL-Abfrage feststellen wieviele Untersuchungen:
- bis jetzt angemeldet wurden =
Zahl1
- wieviele von den angemeldeten bereits durchgefüht wurden = Zahl2
- wieviel von den durchgeführten bereits ausgewertet wurden = Zahl3

Für die Ermittlung von Zahl1, Zahl2... etc führe ich eine getrennte
SQL-Abrfage:
SELECT AP_ID, Count(*) As Zahl1
FROM TestTabelle
WHERE angemeldet > 0
GROUP BY AP_ID
...
SELECT AP_ID, Count(*) As Zahl2
FROM TestTabelle
WHERE durchgeführt > 0
GROUP BY AP_ID

Anschließend lese ich die Ergebnisse der Abfrage über eine For Next-Schleif
aus und schreibe sie in entsprechene Spalten einer weiteren Tabelle in der
Datanbank. Diese kann ich dann als ganze schnell auslesen und über Datasource
an eine Datagridview binden.
Die einzelnen Abfragen und vor allem die Notwàndigkeit die Ergebnisse in
eine weitere Tabelle zu schreiben dauert relativ lange, so das ich nach einer
schnelleren Lösung suche. Könne mir vielliecht jemand eien Tipp geben?
Gruß
Christoph
 

Lesen sie die antworten

#1 Stefan Hoffmann
19/06/2009 - 13:30 | Warnen spam
hallo Christoph,

Christoph Michalski wrote:
Anschließend lese ich die Ergebnisse der Abfrage über eine For Next-Schleif
aus und schreibe sie in entsprechene Spalten einer weiteren Tabelle in der
Datanbank.


Unnötig, erstelle dir eine Sicht mit Unterabfragen, z.B.:

CREATE VIEW Sicht AS
SELECT
(SELECT Count(*)
FROM Tabelle I
WHERE I.AP_ID = O.ID
AND I.angemeldet > 0) AS angemeldet,
(SELECT Count(*)
FROM Tabelle I
WHERE I.AP_ID = O.ID
AND I.durchgeführt > 0) AS durchgeführt
FROM Arbeitsplatz O


mfG

Ähnliche fragen