login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SUM( MAX(..) )

Offline CDNC - 25/07/2010 11:55
Avatar van CDNCPHP ver gevorderde Ik heb verlopig het volgende:

MID = Monster ID
UID = user ID
NID = hiervan wil ik het hoogste NID per user van een bepaalt monster. NID's lopen van 1,2,...MAX(NID) maar ik ben enkel geïnteresseerd in het MAX. (Het kan zijn dat een zelfde NID meerdere keren voorkomt bij een speler bij een bepaalt monster, NID is geen unieke waarde)
Om het totaal aantal kills van een monster te berekenen moet ik alle MAX(NID) van alles spelers optellen.
  1. function kills($MID){
  2. global $oMysql;
  3. $_ = " SELECT
  4. MAX(NID) as kills
  5. FROM
  6. `tbl`
  7. WHERE
  8. MID = '". $MID ."'
  9. GROUP BY
  10. UID
  11. ";
  12. $_ = $oMysql->query($_);
  13. for($iKills=0;$a=mysql_fetch_assoc($_);$iKills += $a['kills']);
  14. return $iKills;
  15. }

Maar is er een manier hoe ik de for-loop kan weg laten en alles in de MySQL query oplossen? (Zodat ik deze functie kan laten vervallen en de boel bij in de hoofd-query kan steken? Nu moet ik per monster nog eens een deze query doen en dat kunnen er wel eens veel worden)

2 antwoorden

Gesponsorde links
Offline Stijn - 25/07/2010 11:58
Avatar van Stijn PHP expert MAX() gaat maar één resultaat teruggeven, namelijk het grootste NID.
Offline CDNC - 25/07/2010 12:03
Avatar van CDNC PHP ver gevorderde Dat weet ik, daarom dat ik achteraf de for-loop nodig heb. maar deze kan ik dus niet laten vervallen op een of andere manier?

Als ik nu een lijst maak van 50 monsters is dat 1 grote hoofd-query + 50 keer de query van kills + nog enkele query's van allerlei basis stuff. Op zich geen probleem om 60 query's te maken, maar ik hou er wel van om alles in 1 te proppen.

Ik had er ook al een gedacht om in de tabel Monsters een extra veldje te maken kills en daar de boel bij te houden maar dan doe ik dubbel werk en moet dat ook zeer goed bij gehouden worden.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.172s