To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Bazy danych SQL - Ranking zapytanie SQL

Raduss - 09-04-2013, 11:31
Temat postu: Ranking zapytanie SQL
Witam

Przerobiłem sobie statystykę TOP50 Godzin na Ranking TOP30 Graczy

Wszystko ładnie działa wczytuję mi osoby, które mają min 1 pkt wygrany w meczu
ale jak zrobić żeby wczytało również osoby, które mają np 1pkt przegrany i nie mają wygranego meczu?

Kod:
$sql = "SELECT user_id, username, user_session_time, user_allow_viewonline, user_jr, user_level, user_field_5, user_field_6, user_field_7, user_field_8
        FROM " . USERS_TABLE . " WHERE (user_field_5 > '0') ORDER BY user_field_5 DESC LIMIT 30";


Wczytuje tylko osoby z user_field_5 czyli tabela: Wygrane
A jak ktoś przegrał to ma user_field_6 Przegrane i tej osoby nie pokazuje.
Bo ranking pokazuje tylko Wygrane.
Jak dodać żeby pokazywało nawet tych, którzy nie wygrali, a przegrali

Link: http://www.goldgame.pl/staty_1on1.php

L: Test
H: test

MQs - 09-04-2013, 14:37

Kod:
...WHERE (user_field_5 > '0') ORDER BY...

zamień na:
Kod:
...WHERE user_field_5 > '0' OR user_field_6 > '0' ORDER BY...

remisowych analogicznie np. "...OR user_field_7.."

Raduss - 10-04-2013, 08:58

Działa dzięki

AD1. Jak zrobić żeby najpierw patrzyło na Wygrane a potem na Przegranych czyli że

5. Ktoś tam 0 Wygranych 3 Przegrane 0 Remis
6. Ktoś tam 0 Wygranych 2 Przegrane 0 Remis

Jak widać ten 6 powinien być wyżej nad 5 bo ma mniej przegranych.


AD2. Jak zrobić żeby wyliczało średnią wygranej czyli:
1. 1 Wygrana 1 Przegrana = 0
2. 2 Wygrane 1 Przegrana = 1 i powinien znaleźć się wyżej nad tym 1

MQs - 10-04-2013, 10:50

Możesz sobie zapisać sortowanie za pomocą działania na wartościach pól np wg ilości punktów - wygrana=3, remis=1:
Kod:
ORDER BY (3*user_field_5 + user_field_7) DESC

Ewentualnie dodać kolejne kryterium sortowania w przypadku takiej samej ilości punktów - tutaj np liczy przegrane, a potem (gdy nadal mamy równorzędne wyniki) ilość meczów:
Kod:
ORDER BY (3*user_field_5 + user_field_7) DESC, user_field_6 ASC, (user_field_5 + user_field_6 + user_field_7) DESC

Nie znam pełnych zasad ustalania kolejności w tabeli, więc gotowego rozwiązania ci nie podam, ale chyba widać o co chodzi.



Powered by phpBB modified by Przemo © 2003 phpBB Group