Hallo,
ich programmiere zur Zeit ein Browsergame, genauer einen Fussballmanager.
Aktuell möchte ich die Berechnungen des Trainings machen.
Ich hab das jetzt alles in ein
SQL-UPDATE Statement gepackt:
SQL-Code:
update players as p1 SET
p1.skill1=p1.skill1*(select t1skill1 from team_training where team=p1.team),
p1.skill2=p1.skill2*(select t1skill2 from team_training where team=p1.team),
p1.skill3=p1.skill3*(select t1skill3 from team_training where team=p1.team),
p1.skill4=p1.skill4*(select t1skill4 from team_training where team=p1.team),
p1.skill5=p1.skill5*(select t1skill5 from team_training where team=p1.team),
p1.skill6=p1.skill6*(select t1skill6 from team_training where team=p1.team)
where p1.team>'0'
Ich hab die zwar nochnicht getestet, aber die müsste wohl so aussehen.
Was mir nicht gefällt sind die 6 subselects.
Kann ich in nem Update nicht diese andere Tabelle joinen? Es geht immerhin um knapp 40.000 DS ind er Tabelle players und knapp 4.000 in der tabelle team_training
Edit:
Mir iss grad eingefallen das bei den Spielern das Team nicht direkt dabei steht
Vereinfach habe ich das auch, mit einem Join:
SQL-Code:
update players as p1 left outer join player_contracts as c1 on c1.player=p1.id and c1.ende=0 left outer join team_training as t1 on t1.team=c1.team SET
p1.skill1=p1.skill1*t1.t1skill1,
p1.skill2=p1.skill2*t1.t1skill2,
p1.skill3=p1.skill3*t1.t1skill3,
p1.skill4=p1.skill4*t1.t1skill4,
p1.skill5=p1.skill5*t1.t1skill5,
p1.skill6=p1.skill6*t1.t1skill6
Ich habe ds ausgeführt und es funktioniert zumindest mal..
Allerdings hat das nach 5 Minuten gerademal 7.000 Datensätze durch, das ist viel zu langsam das muss doch schneller gehen