PDA

Vollständige Version anzeigen : SQL: len verbinden und Summenfelder anzeigen


knubbie!
27.09.2005, 12:34
Hallo Leute,
hab mal wieder einen Fall, den ich nicht gelöst bekomme.

Ich hab die folgenden beiden Tabellen:
http://www.spontan-mg.de/test/Arbeitslohn.jpg http://www.spontan-mg.de/test/Fahrtenbuch.jpg

Diese Tabellen möchte ich mit einer Auswahlabfrage so zusammenfassen, daß folgendes Ergebnis herauskommt:
http://www.spontan-mg.de/test/Ergebnis.jpg

Leider reichen meine SQL-Kenntnisse dafür nicht aus. Konnte bis jetzt nur zu diesem Ergebnis kommen:
http://www.spontan-mg.de/test/Access.jpg
Was natürlich Müll ist.

Komm da auch mit meinen Access-Büchern nicht weiter.
Hab auch die Access-Datei angehangen.

Nouba
27.09.2005, 12:39
Zwischen Deinen Tabellen scheint keine Beziehung zu bestehen - ich habe deshalb keine Ahnung, was unter welchen Regeln berechnet werden soll.

WMS
27.09.2005, 12:51
... welche Beziehung besteht den zwischen beiden Tabellen????? :entsetzt:

molnar
27.09.2005, 12:58
Da die ID in Deiner Wunschtabelle in keiner Beziehung zu den IDs in den Basistabellen zu stehen, sondern eher eine laufende Nummer zu sein scheint, mußt Du sie selbst berechnen (siehe andere Beiträge im Forum).

Für die restlichen Felder Deiner Wunschtabelle würde ich folgendes´Vorgehen vorschlagen:
1. Abfrage Arbeitertabelle:
Konto: "Arbeitslohn" - Name: Arbeiter - Kosten: Summe von Lohn
2. Abfrage KFZ-Tabelle:
Konto: "Fahrtenbuch" - Name: KFZ - Kosten: Summe von Betrag
3. Abfrage = UNION der 1. und 2. Abfrage

Das sollte ein Deinen Wünschen nahekommendes Resultat bringen.

Gruß,
Reinhard

knubbie!
27.09.2005, 12:58
Richtig, es gibt keine Beziehungen zwischen den beiden Tabellen. Rechnerich haben die auch nichts miteinander zu tun. Es sollen lediglich Summen geblidet werden, die die jeweilige Tabelle betreffen. Beide Tabellen sollen halt dann gleichzeitig in meiner Auswahlabfrage stehen.

Ich weiß nicht, wie ich es besser beschreiben soll. Daher hab ich ja auch die Bilder reingestellt.

molnar
27.09.2005, 13:01
Da die ID in Deiner Wunschtabelle in keiner Beziehung zu den IDs in den Basistabellen zu stehen, sondern eher eine laufende Nummer zu sein scheint, mußt Du sie selbst berechnen (siehe andere Beiträge im Forum).

Für die restlichen Felder Deiner Wunschtabelle würde ich folgendes Vorgehen vorschlagen:
1. Abfrage Arbeitertabelle:
Konto: "Arbeitslohn" - Name: Arbeiter - Kosten: Summe von Lohn
2. Abfrage KFZ-Tabelle:
Konto: "Fahrtenbuch" - Name: KFZ - Kosten: Summe von Betrag
3. Abfrage = UNION der 1. und 2. Abfrage

Das sollte ein Deinen Wünschen nahekommendes Resultat bringen.

Gruß,
Reinhard

WMS
27.09.2005, 13:09
dann mach aus deiner einen Abfrage zwei Abfragen mit je einer Tabelle und gruppierst deine Felder mit Summenbildung.
Wenn die Ergebnisse in einer Tabelle stehen sollen, dann machst du die erste Abfrage als Tabellenerstellungsabfrage und die zweite als Anfügeabfrage an die Tabelle der ersten abfrage. :entsetzt:

knubbie!
27.09.2005, 13:16
@molnar
hört sich sehr gut an.
Hab also gerade mal 2 separate Abfragen für jede Tabelle erstellt.
Wie genau funktioniert das jetzt mit der dritten Abfrage (UNION) ??

knubbie!
27.09.2005, 13:19
@WMS
es sollen ja keine Datensätze der einen Tabelle an die andere angehangen werden. Vielmehr sollen die Tabellen durch diese Sache nicht beeinflusst werden. Das Ergebnis sollte auf jeden Fall aus einer Abfrage relutiern.

molnar
27.09.2005, 13:20
Abfrage in der SQL-Ansicht öffnen und folgendes eingeben:
TABLE Abfrage1 UNION TABLE Abfrage2 ORDER BY Konto, Name;
Die Namen mußt Du an Deine Tabellen- und Feldnamen anpassen.

Gruß,
Reinhard

knubbie!
27.09.2005, 13:26
HEY SUPI !!
Genau das hab ich gesucht: "UNION".

Und es ist tatsächlich nicht möglich, den SQL-Code dieser 3 Abfragen in eine einzige zu packen?

knubbie!
27.09.2005, 13:33
@molnar
ähhh ja, die Frage hät ich mir dann auch sparen können. Klar geht das:
TABLE (SELECT Fahrtenbuch.KFZ, Sum(Fahrtenbuch.Betrag) AS [Summe von Betrag]
FROM Fahrtenbuch
GROUP BY Fahrtenbuch.KFZ) UNION TABLE (SELECT Arbeitslohn.Arbeiter, Sum(Arbeitslohn.Lohn) AS [Summe von Lohn]
FROM Arbeitslohn
GROUP BY Arbeitslohn.Arbeiter
);

Vielen Dank für deine Hilfe!

molnar
27.09.2005, 13:37
Geht auch, ist aber unübersichtlicher und nicht so leicht verständlich:

SELECT "Arbeitslohn" AS Konto, Arbeiter AS Name, Sum(Lohn) AS Kosten
FROM Arbeitertabelle GROUP BY Arbeiter
UNION
SELECT "Fahrtenbuch" AS Konto, KFZ AS Name, Sum(Betrag) AS Kosten
FROM KFZTabelle GROUP BY KFZ
ORDER BY Konto, Name;

Reinhard