Einzelnen Beitrag anzeigen

Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

UPDATE Statement vereinfachen

  Alt 24. Aug 2008, 08:40
Datenbank: MySQL • Version: 5 • Zugriff über: PHP
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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat