PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Mysql sum Abfrage über 2 Tabellen (http://www.selfphp.de/forum/showthread.php?t=25000)

roovee 02.07.2013 00:52:11

Mysql sum Abfrage über 2 Tabellen
 
Hallo zusammen

Ich arbeite nun schon einige Tage an diesem Problem, leider ohne Erfolg. Auch diverse Internet Artikel brachten keine Lösung. Ich habe eine Datenbank mit unter anderem folgenden Tabellen.

tbl_seasonparts_players und tbl_calendar_players

tbl_seasonparts_players:

sepl_id -> primary key
sepl_seasonbonus -> Zusatzpunkte einer Teilsaison
sepl_finalpoints -> Zusatzpunkte vom Finale der Teilsaison
play_id -> Spieler ID als Foreign Key aus einer anderen Tabelle

tbl_calendar_players:

cal_play_id -> primary key
cal_play_playpoints -> Punkte pro Spieltag
play_id -> Spieler ID als Foreign Key aus einer anderen Tabelle

Erklärung der Tabellen:

tbl_seasonparts_players, die Spieler haben während einer Saison 4 finals in welchen Zusatzpunkte je nach Rang erhalten werden können. Zudem haben sie die Möglichkeit am Ende einer Teilsaison (total 4 Teilsaisons) ebenfalls Zusatzpunkte, je nach Rang, zu erhalten. Der Spieler kann also bis zu 8 mal einen Eintrag in dieser Tabelle haben.

tbl_calendar_players, die Spieler haben in den jeweiligen Teilsaisons mehrere Spiele in welchen sie Punkte sammeln können. es gibt 10 Spieltage pro Teilsaison, also können sie bis zu 40 Einträge pro Spieler haben.

Ich möchte nun die Summe aller Punkte aus beiden Tabellen pro Spieler addieren.

Vielen Dank schon mal für euer Bemühen.

gruss patrik

roovee 02.07.2013 01:12:17

AW: Mysql sum Abfrage über 2 Tabellen
 
Ich konnte zwischenzeitlich einen Query erstellen, welcher das korrekte Resultat liefert. Ich wäre dankbar wenn jemand sich diesen ansehen könnte und eventuell noch Optimierungen anbringen.


Code:


select plid, sum(sumpoints) as total from (
select
tbcapl.play_id as plid,
sum(tbcapl.cal_play_playpoints) as sumpoints
from tbl_calendar_players as tbcapl group by plid

union

select
tbsepl.play_id as plid,
sum(tbsepl.sepl_seasbonus) as sumpoints
from tbl_seasonparts_players as tbsepl
group by plid

union

select
tbsepl.play_id as plid,
sum(tbsepl.sepl_finalpoints) as sumpoints
from tbl_seasonparts_players as tbsepl
group by plid
) as gugus group by plid


Ckaos 03.07.2013 07:02:52

AW: Mysql sum Abfrage über 2 Tabellen
 
Hi,

sieht doch erstmal gut aus, nur wirste ohne index und bei mehr als
~1000 Spielern / Einträgen probleme bekommen.
Tip: Baue eine weitere Tabelle wo das Ergebnis schon berechnet ist, quasi
gecached ;)

mfg

CKaos


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:46:28 Uhr.

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