Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] wyszukiwanie po działaniu
Forum PHP.pl > Forum > Przedszkole
colinQ
Przypuśćmy że mam taką tabelkę:

  1. | login| haslo | wartosc1 | wartosc2 | wartosc3 |


I chcę aby SQL wykonał takie działanie (wartosc1 * 50%) + (wartosc2 * 25%) + (wartosc3 * 25%)
I wszystko posegregował malejąco. Da się tak?
Grzyw
  1. SELECT login, wartosc1 / 2 AS wartosc1, wartosc2 / 4 AS wartosc2, wartosc3 / 4 AS wartosc 3 FROM TABELA ORDER BY .... DESC
|

Jeżeli się mylę, to sorry smile.gif Nigdy nie robiłem działań matematycznych bezp. z poziomu SQL
colinQ
ale order by co?

ORDER'em powinno być to działanie...

Tylko jak to zrobić...?
Grzyw
Ale według której kolumny chcesz sortować?
b_chmura
Chodzi o to
  1. SELECT login, (wartosc1 * 0.5), (wartosc2 * 0.25), (wartosc3 * 0.25) FROM `nazwa_tabeli` ORDER BY (wartosc1 * 0.5), (wartosc2 * 0.25), (wartosc3 * 0.25) DESC


albo o to

  1. SELECT * FROM `nazwa_tabeli` ORDER BY ((wartosc1 * 0.5) + (wartosc2 * 0.25) + (wartosc3 * 0.25)) DESC


czy jeszcze o coś innego?

Edit
ewentualnie

  1. SELECT login, (wartosc1 * 0.5), (wartosc2 * 0.25), (wartosc3 * 0.25) FROM `nazwa_tabeli` ORDER BY ((wartosc1 * 0.5) + (wartosc2 * 0.25) + (wartosc3 * 0.25)) DESC
colinQ
właśnie wg. tego wyliczenia

tak, dzięki, pomogłeś smile.gif

Kurcze, jest problem :/

Bo zrobiłem ranking na podstawie tego zapytania i źle pokazuje...

  1. <?php
  2. function ranking_pokaz_rank() {
  3.  
  4. $zapytaj = mysql_query("SELECT * FROM `users` ORDER BY ((walki * 0.5) + (pkt_ataku * 0.25) + (pkt_obrony * 0.25)) DESC");
  5.  
  6. $ile = mysql_num_rows($zapytaj);
  7.  
  8. echo '<table style=font-size:11px;color:black; cellspacing=5><tr>
  9. <td style=outline-style:solid;outline-width:thin;outline-color:#444444 width=12%><center>lp.</td>
  10. <td style=outline-style:solid;outline-width:thin;outline-color:#444444 width=15%><center>id</td>
  11. <td style=outline-style:solid;outline-width:thin;outline-color:#444444 width=33%><center>login</td>
  12. <td style=outline-style:solid;outline-width:thin;outline-color:#444444 width=15%><center>kraj</td>
  13. <td style=outline-style:solid;outline-width:thin;outline-color:#444444 width=10%><center>punkty</td>
  14. </tr>';
  15.  
  16. $lp = 0;
  17.  
  18. for($i=1; $i <= $ile; $i++) {
  19.  
  20. $fetch = mysql_fetch_assoc($zapytaj);
  21.  
  22. $punkty = round(($fetch['walki'] * 0.5) + ($fetch['pkt_ataku'] * 0.25) + ($fetch['pkt_obrony']));
  23.  
  24. $login = $fetch['log'];
  25.  
  26. if($fetch['kraj'] == 'Polska')
  27. $flaga = 'flaga_polska.gif';
  28. if($dfetch['kraj'] == 'zsrr')
  29. $flaga = 'flaga_zsrr.gif';
  30. if($fetch['kraj'] == 'III Rzesza')
  31. $flaga = 'flaga_3rzesza.gif';
  32.  
  33. if($login !== "Konrad" && $login !== "Genro" && !isset($loginy[$login])) {
  34.  
  35. $lp += 1;
  36.  
  37. echo "<tr>
  38. <td width=12%><center>$lp</td>
  39. <td width=15%><center>".$fetch['id']."</td>
  40. <td width=33%><center>".$fetch['log']."</td>
  41. <td width=15%><center><img src=grafika/".$flaga."></td>
  42. <td width=10%><center><b>$punkty</b></td>
  43. </tr>";
  44.  
  45. $loginy[$login] = $login;
  46.  
  47. }
  48.  
  49. }
  50.  
  51. echo '</table>';
  52.  
  53. }
  54. ?>



link do rankingu: http://iiws.ugu.pl/index.php?frame=ranking




Problem:

zobaczcie na pole punkty :/
Kicok
Cytat
+ ($fetch['pkt_obrony'])


zapomniałeś o " * 0.25" ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.