PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Prozent-Spalte erzeugen über zwei Tabellen aber nicht allen Zeilen (http://www.selfphp.de/forum/showthread.php?t=24549)

upnay 17.01.2012 12:55:05

Prozent-Spalte erzeugen über zwei Tabellen aber nicht allen Zeilen
 
Liste der Anhänge anzeigen (Anzahl: 3)
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é


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:30:58 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.