Hallo,
bin zwar nicht mehr ganz neu im Bereich PHP und MySQL kommen mit folgender mysql-Abfrage aber nicht zum Ziel. Ich versuche es mal in Kurzform:
Nutze zwei Tabellen:
'thema' -> siehe thema.gif
'daten_plan' -> siehe daten_plan.gif
Mit folgender MySQL-Abfrage lese ich die Daten aus 'plan_daten' und 'thema aus und füge diese Daten zusammen.
Code:
SELECT
plan_daten.id,
plan_daten.position,
plan_daten.tag,
thema.id thema_id,
thema.titel thema_titel,
thema.soll_minuten thema_soll_minuten,
thema.details thema_details,
(SELECT
ROUND(thema_soll_minuten * 100 / SUM(thema.soll_minuten), 2)
FROM
plan_daten, thema
WHERE
plan_daten.thema = thema.id) thema_prozent
FROM
plan_daten
LEFT JOIN
thema
ON (plan_daten.thema = thema.id)
WHERE plan_daten.id = 1;
(Die '1' wird beim Aufrufen der Abfrage dynamisch als $id übergeben.)
Diese Anfrage erzeugt eine zusätzliche Spalte 'thema_prozent' in der angegeben ist, wieviel Prozent der Wert aus 'thema.soll_minuten' im Bezug zur gesamten Spalte 'thema.soll_minuten' hat. Damit bekomme ich das Ergebnis -> siehe ergebnis.gif.
Nun möchte ich aber das der Prozentwert nicht über die komplette Spalte 'thema.soll_minuten' bestimmt wird, sonder nur über die jeweiligen Zeilen die zu einem bestimmten Tag gehören. Der jeweilige Tag ist in der Spalte 'tag' in der Tabelle 'plan_daten' angegeben.
Ich denke, dass ich das mit bestimmt mit 'group by' lösen kann. Allerdings habe ich keine Idee, wo ich dies in der Abfrage einbauen kann/muss.
Ich hoffe das war halbwegs verständlich, ansonsten einfach noch einmal nachfragen.
Vielleicht hat ja hier jemand eine Hilfestellung/Lösung für mich.
Vielen Dank schon einmal...
René