Hello
In Access ist es relative einfach, in eine Abfrage nicht nur Tabellen sondern auch andere Abfragen zu packen.
Ich habe unten so ein Beispiel: Ich habe ein Personentabelle und je eine
Einnahmen- und Ausgaben-Tabelle.
Ich möchte nun eine Abfrage erstellen, die mir alle Personen mit dem Total Einnahmen und Total Ausgaben anzeigt, plus die Differenz zwischen Einnahmen und Ausgaben.
Dazu habe ich drei Abfragen in Access 97 erstellt:
Je eine, die die Summen für Einnahmen und Augaben berechnen, und die dritte
verbindet die Summen dann mit der Person.
Die Abfragen sehen wie folgt aus:
SELECT a_person, Sum(a_preis) AS a_total
FROM ausgang
GROUP BY a_person;
SELECT e_person, Sum(e_preis) AS e_total
FROM eingang
GROUP BY e_person;
SELECT name, [a_total]*1 AS ein, [e_total]*1 AS aus, [e_total]-[a_total] AS saldo
FROM (person LEFT JOIN atotal ON person.nr = atotal.a_person) LEFT JOIN etotal ON person.nr = etotal.e_person;
Da ich das ganze nicht in Access machen will, sondern mit Delphi5 und ADO,
möchte ich die gleiche Lösung in nur einer einzigen Abfrage (SQL Befehl) erreichen. Geht das?
Wenn ich es so probiere,
SELECT person.name, Sum(ausgang.a_preis) AS [Summe von a_preis], Sum(eingang.e_preis) AS [Summe von e_preis]
FROM (person LEFT JOIN ausgang ON person.nr = ausgang.a_person) LEFT JOIN eingang ON person.nr = eingang.e_person
GROUP BY person.name;
dann werden die Summen falsch berechnet.
Bin für jeden Lösungsansatz sehr dankbar
MfG
Markus Welten
P.S: Ausserdem gibt es noch das Problem, wenn bei einer Person keine Einnahmen oder Ausgaben vorhanden sind. Da das ein NULL Wert ist, kann man
keine Differenz ausrechnen. Access hat dafür die Funktion NZ(), um einen NULL Wert in ein 0 umzuwandeln. Aber Delphi (ADO) kennt diese Function nicht.
In Access ist es relative einfach, in eine Abfrage nicht nur Tabellen sondern auch andere Abfragen zu packen.
Ich habe unten so ein Beispiel: Ich habe ein Personentabelle und je eine
Einnahmen- und Ausgaben-Tabelle.
Ich möchte nun eine Abfrage erstellen, die mir alle Personen mit dem Total Einnahmen und Total Ausgaben anzeigt, plus die Differenz zwischen Einnahmen und Ausgaben.
Dazu habe ich drei Abfragen in Access 97 erstellt:
Je eine, die die Summen für Einnahmen und Augaben berechnen, und die dritte
verbindet die Summen dann mit der Person.
Die Abfragen sehen wie folgt aus:
SELECT a_person, Sum(a_preis) AS a_total
FROM ausgang
GROUP BY a_person;
SELECT e_person, Sum(e_preis) AS e_total
FROM eingang
GROUP BY e_person;
SELECT name, [a_total]*1 AS ein, [e_total]*1 AS aus, [e_total]-[a_total] AS saldo
FROM (person LEFT JOIN atotal ON person.nr = atotal.a_person) LEFT JOIN etotal ON person.nr = etotal.e_person;
Da ich das ganze nicht in Access machen will, sondern mit Delphi5 und ADO,
möchte ich die gleiche Lösung in nur einer einzigen Abfrage (SQL Befehl) erreichen. Geht das?
Wenn ich es so probiere,
SELECT person.name, Sum(ausgang.a_preis) AS [Summe von a_preis], Sum(eingang.e_preis) AS [Summe von e_preis]
FROM (person LEFT JOIN ausgang ON person.nr = ausgang.a_person) LEFT JOIN eingang ON person.nr = eingang.e_person
GROUP BY person.name;
dann werden die Summen falsch berechnet.
Bin für jeden Lösungsansatz sehr dankbar
MfG
Markus Welten
P.S: Ausserdem gibt es noch das Problem, wenn bei einer Person keine Einnahmen oder Ausgaben vorhanden sind. Da das ein NULL Wert ist, kann man
keine Differenz ausrechnen. Access hat dafür die Funktion NZ(), um einen NULL Wert in ein 0 umzuwandeln. Aber Delphi (ADO) kennt diese Function nicht.
Comment