basementmedia
Benutzer
- Beiträge
- 16
Hi zusammen,
ich möchte aus den einzelnen Zeilen eines Querys eine Summe bilden:
SELECT
ROUND(((sum(stunden.stunden))*(ROUND(((ROUND((projekte.hmax * projekte.hsatz),2))/((SELECT sum(stunden) FROM stunden WHERE projekt_id=projekte.ID))),2) )),2) as peuro_h_u
FROM stunden
LEFT JOIN projekte ON stunden.projekt_id = projekte.ID
WHERE stunden.user_id = 27 AND (stunden.datum between '2018-01-01' AND '2018-01-31')
GROUP BY stunden.projekt_id
ORDER BY sum(stunden.stunden) ASC
Folgendes klappt zwar:
SELECT SUM(peuro_h_u) as peuro_h_u_summe FROM (SELECT
ROUND(((sum(stunden.stunden))*(ROUND(((ROUND((projekte.hmax * projekte.hsatz),2))/((SELECT sum(stunden) FROM stunden WHERE projekt_id=projekte.ID))),2) )),2) as peuro_h_u
FROM stunden
LEFT JOIN projekte ON stunden.projekt_id = projekte.ID
WHERE stunden.user_id = 27 AND (stunden.datum between '2018-01-01' AND '2018-01-31')
GROUP BY stunden.projekt_id
ORDER BY sum(stunden.stunden) ASC) as peuro_h_u_summe
Das Problem ist nur, dass ich diesen Query bereits in einen anderen Subquery verschachteln will, um im Anschluss daran die user.ID (im Beispiel oben fix auf 27 gesetzt) vom Parent-Query zu beziehen, wie nachfolgend dargestellt:
SELECT
u.ID as dataset_id,
u.name,
(SELECT SUM(peuro_h_u) as peuro_h_u_summe FROM (SELECT
ROUND(((sum(stunden.stunden))*(ROUND(((ROUND((projekte.hmax * projekte.hsatz),2))/((SELECT sum(stunden) FROM stunden WHERE projekt_id=projekte.ID))),2) )),2) as peuro_h_u
FROM stunden
LEFT JOIN projekte ON stunden.projekt_id = projekte.ID
WHERE stunden.user_id = u.ID AND (stunden.datum between '2018-01-01' AND '2018-01-31')
GROUP BY stunden.projekt_id
ORDER BY sum(stunden.stunden) ASC) p) as peuro_summe
FROM user u ORDER BY u.name
Da ich hier dann eine doppelte Verschachtelung habe, kennt er u.ID im Unter-Unter-Query nicht.
Und ich komm einfach nicht drauf, wie ich die doppelte Verschachtelung umgehen kann.
Kann mir irgendjemand einen Tipp geben.
Grüßle
Daniel
ich möchte aus den einzelnen Zeilen eines Querys eine Summe bilden:
SELECT
ROUND(((sum(stunden.stunden))*(ROUND(((ROUND((projekte.hmax * projekte.hsatz),2))/((SELECT sum(stunden) FROM stunden WHERE projekt_id=projekte.ID))),2) )),2) as peuro_h_u
FROM stunden
LEFT JOIN projekte ON stunden.projekt_id = projekte.ID
WHERE stunden.user_id = 27 AND (stunden.datum between '2018-01-01' AND '2018-01-31')
GROUP BY stunden.projekt_id
ORDER BY sum(stunden.stunden) ASC
Folgendes klappt zwar:
SELECT SUM(peuro_h_u) as peuro_h_u_summe FROM (SELECT
ROUND(((sum(stunden.stunden))*(ROUND(((ROUND((projekte.hmax * projekte.hsatz),2))/((SELECT sum(stunden) FROM stunden WHERE projekt_id=projekte.ID))),2) )),2) as peuro_h_u
FROM stunden
LEFT JOIN projekte ON stunden.projekt_id = projekte.ID
WHERE stunden.user_id = 27 AND (stunden.datum between '2018-01-01' AND '2018-01-31')
GROUP BY stunden.projekt_id
ORDER BY sum(stunden.stunden) ASC) as peuro_h_u_summe
Das Problem ist nur, dass ich diesen Query bereits in einen anderen Subquery verschachteln will, um im Anschluss daran die user.ID (im Beispiel oben fix auf 27 gesetzt) vom Parent-Query zu beziehen, wie nachfolgend dargestellt:
SELECT
u.ID as dataset_id,
u.name,
(SELECT SUM(peuro_h_u) as peuro_h_u_summe FROM (SELECT
ROUND(((sum(stunden.stunden))*(ROUND(((ROUND((projekte.hmax * projekte.hsatz),2))/((SELECT sum(stunden) FROM stunden WHERE projekt_id=projekte.ID))),2) )),2) as peuro_h_u
FROM stunden
LEFT JOIN projekte ON stunden.projekt_id = projekte.ID
WHERE stunden.user_id = u.ID AND (stunden.datum between '2018-01-01' AND '2018-01-31')
GROUP BY stunden.projekt_id
ORDER BY sum(stunden.stunden) ASC) p) as peuro_summe
FROM user u ORDER BY u.name
Da ich hier dann eine doppelte Verschachtelung habe, kennt er u.ID im Unter-Unter-Query nicht.
Und ich komm einfach nicht drauf, wie ich die doppelte Verschachtelung umgehen kann.
Kann mir irgendjemand einen Tipp geben.
Grüßle
Daniel