Verschachtelte SQL-Abfrage
Hallo!
Ich hänge heute Nachmittag an einer SQL-Abfrage und komme nicht auf das Ergebnis. Vielleicht kann jemand helfen?
Vorhanden:
Tabelle Geräte
Geräte.ID
Geräte.Gerätemiete_Jahr_netto
Tabelle Seitenzahlen
Seitenzahlen.ID (entspricht Geräte.ID)
Seitenzahlen.Haushaltsstelle
Seitenzahlen.Jahr
Seitenzahlen.SW-Seiten
Seitenzahlen.Farbseiten
Ziel: Verteilung der Gerätemiete auf die einzelnen Haushaltsstellen anhand des Druckvolumens
Hinweis: Auf den Geräten drucken verschiedene Abteilungen.
Mein Ansatz:
SELECT Geräte.ID, Geräte.Gerätemiete_Jahr_netto, Seitenzahlen.Haushaltsstelle, SUM(Seitenzahlen.[SW-Seiten]) AS SummeSWSeiten, SUM(Seitenzahlen.Farbseiten) AS SummeFarbseiten, SummeSWSeiten+SummeFarbseiten AS GedruckteSeiten, GedruckteSeiten/(SELECT Sum(Seitenzahlen.[SW-Seiten])+Sum(Seitenzahlen.Farbseiten) AS GedruckteSeiten
FROM Seitenzahlen
WHERE (((Seitenzahlen.Jahr)=[Geben Sie das Jahr ein:]) AND Seitenzahlen.ID=Geräte.ID)
GROUP BY Seitenzahlen.ID)*Geräte.Gerätemiete_Jahr_netto AS AnteilGerätemiete
FROM Geräte, Seitenzahlen
WHERE Geräte.ID=Seitenzahlen.ID AND Seitenzahlen.Jahr=Jahreszahl
GROUP BY Geräte.ID, Geräte.Gerätemiete_Jahr_netto, Seitenzahlen.Haushaltsstelle
Damit bekomme ich die Grundtabelle:
Geräte-ID | Gerätemiete_Jahr_netto | Haushaltsstelle | Summe SW-Seiten | Summe Farbseiten | Summe gedruckte Seiten | Anteil Gerätemiete
=> Alle Geräte, alle Haushaltsstellen zu den Geräten und das jeweilige Druckaufkommen sowie anhand des Druckaufkommens der Gerätemieteanteil.
Nun hätte ich gerne die einzelnen Gerätemieteanteile summiert und gruppiert anhand der Haushaltsstellen. Also dass die Zieltabelle so aussieht:
Haushaltsstelle | Anteil Gerätemiete
Hat jemand einen Tip, wie ich das hinbekomme?
Ich glaube ich stehe auf dem Schlauch...
Ich hänge heute Nachmittag an einer SQL-Abfrage und komme nicht auf das Ergebnis. Vielleicht kann jemand helfen?
Vorhanden:
Tabelle Geräte
Geräte.ID
Geräte.Gerätemiete_Jahr_netto
Tabelle Seitenzahlen
Seitenzahlen.ID (entspricht Geräte.ID)
Seitenzahlen.Haushaltsstelle
Seitenzahlen.Jahr
Seitenzahlen.SW-Seiten
Seitenzahlen.Farbseiten
Ziel: Verteilung der Gerätemiete auf die einzelnen Haushaltsstellen anhand des Druckvolumens
Hinweis: Auf den Geräten drucken verschiedene Abteilungen.
Mein Ansatz:
SELECT Geräte.ID, Geräte.Gerätemiete_Jahr_netto, Seitenzahlen.Haushaltsstelle, SUM(Seitenzahlen.[SW-Seiten]) AS SummeSWSeiten, SUM(Seitenzahlen.Farbseiten) AS SummeFarbseiten, SummeSWSeiten+SummeFarbseiten AS GedruckteSeiten, GedruckteSeiten/(SELECT Sum(Seitenzahlen.[SW-Seiten])+Sum(Seitenzahlen.Farbseiten) AS GedruckteSeiten
FROM Seitenzahlen
WHERE (((Seitenzahlen.Jahr)=[Geben Sie das Jahr ein:]) AND Seitenzahlen.ID=Geräte.ID)
GROUP BY Seitenzahlen.ID)*Geräte.Gerätemiete_Jahr_netto AS AnteilGerätemiete
FROM Geräte, Seitenzahlen
WHERE Geräte.ID=Seitenzahlen.ID AND Seitenzahlen.Jahr=Jahreszahl
GROUP BY Geräte.ID, Geräte.Gerätemiete_Jahr_netto, Seitenzahlen.Haushaltsstelle
Damit bekomme ich die Grundtabelle:
Geräte-ID | Gerätemiete_Jahr_netto | Haushaltsstelle | Summe SW-Seiten | Summe Farbseiten | Summe gedruckte Seiten | Anteil Gerätemiete
=> Alle Geräte, alle Haushaltsstellen zu den Geräten und das jeweilige Druckaufkommen sowie anhand des Druckaufkommens der Gerätemieteanteil.
Nun hätte ich gerne die einzelnen Gerätemieteanteile summiert und gruppiert anhand der Haushaltsstellen. Also dass die Zieltabelle so aussieht:
Haushaltsstelle | Anteil Gerätemiete
Hat jemand einen Tip, wie ich das hinbekomme?
Ich glaube ich stehe auf dem Schlauch...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 325342
Url: https://administrator.de/forum/verschachtelte-sql-abfrage-325342.html
Ausgedruckt am: 23.12.2024 um 03:12 Uhr
4 Kommentare
Neuester Kommentar
Hi,
dein Statement wäre etwas anpassungsfähig (siehe folgenden Code). Ich habe hier mal die Verknüpfung deiner Tabellen mit Inner Joins umgesetzt. Ich habe hier auch gleich die - so denke ich - Lösung für dein Problem mit eingebaut (Zeile 1 - 5 und 27-29).
Hoffe, habe nichts versehentlich ausgelassen (habe den Code jetzt nicht getestest)
Teste das aber einfach mal...
Gruß
em-pie
dein Statement wäre etwas anpassungsfähig (siehe folgenden Code). Ich habe hier mal die Verknüpfung deiner Tabellen mit Inner Joins umgesetzt. Ich habe hier auch gleich die - so denke ich - Lösung für dein Problem mit eingebaut (Zeile 1 - 5 und 27-29).
SELECT
Haushaltsstelle
, SUM(AnteilGerätemiete)
FROM
(
SELECT
Geräte.ID
, Geräte.Gerätemiete_Jahr_netto
, Seitenzahlen.Haushaltsstelle
, SUM(Seitenzahlen.[SW-Seiten]) AS SummeSWSeiten
, SUM(Seitenzahlen.Farbseiten) AS SummeFarbseiten
, SUM(Seitenzahlen.[SW-Seiten]) + SUM(Seitenzahlen.Farbseiten) AS Seiten_AlleDrucker
, (((SUM(Seitenzahlen.[SW-Seiten]) + SUM(Seitenzahlen.Farbseiten))
/ TBl2.Seiten_jeDrucker)
* Geräte.Gerätemiete_Jahr_netto AS AnteilGerätemiete
FROM
Geräte as Tbl1
INNER JOIN
(
SELECT Seitenzahlen.ID,
, Sum(Seitenzahlen.[SW-Seiten])
+ Sum(Seitenzahlen.Farbseiten) AS Seiten_jeDrucker
FROM Seitenzahlen
WHERE (Seitenzahlen.Jahr)=[Geben Sie das Jahr ein:] AND Seitenzahlen.ID = Geräte.ID
GROUP BY Seitenzahlen.ID
) as Tbl2 on Tbl1.ID = Tbl2.ID
WHERE
Seitenzahlen.Jahr=Jahreszahl
GROUP BY
Geräte.ID, Geräte.Gerätemiete_Jahr_netto, Seitenzahlen.Haushaltsstelle
)
GROUP BY
Haushaltsstelle
Hoffe, habe nichts versehentlich ausgelassen (habe den Code jetzt nicht getestest)
Teste das aber einfach mal...
Gruß
em-pie