Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Złożone zapytanie SELECT
aros
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.03.2008

Ostrzeżenie: (0%)
-----


Cześć!

Mam problem i nie umiem go rozwiązać, a chciałbym, jeśli to możliwe, zapiąć wszystko w jedno zapytanie.

Moje zapytanie w chwili obecnej wygląda tak:

$sql = "SELECT * FROM ranking, userki WHERE ranking.status=0 AND userki.userid = ranking.rankid ORDER BY punkty DESC, bilans DESC LIMIT $s,100;";
Efektem tego zapytania jest wynik:

Lp Player S Pld W D L GS GC GD Pt
1 palune8 0 0 0 0 0 0 0 0 1600
2 nazimilan 0 0 0 0 0 0 0 0 1600
(...)
19 quickie1 - 0 0 0 0 0 0 0 1600
20 Omartje1993 4L 4 0 0 4 1 12 -11 1498
21 bahae 4L 15 2 3 10 12 29 -17 1417

W tabeli z której pobieram dane jest pole o nazwie mecze (w tabelce wyzej nazywa sie to Pld, punkty z zapytania to w tabelce Pt).

Marzy mi się modyfikacja zapytania, która spowoduje, że wszystkie rekordy, w których Pld = 0 będą wyświetlane na samym dole, po rekordach, które Pld mają większe od 0, wówczas tabelka wyglądałaby tak:

Lp Player S Pld W D L GS GC GD Pt
1 Omartje1993 4L 4 0 0 4 1 12 -11 1498
2 bahae 4L 15 2 3 10 12 29 -17 1417
3 palune8 0 0 0 0 0 0 0 0 1600
4 nazimilan 0 0 0 0 0 0 0 0 1600
(...)

Jakieś pomysły?
AW
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Do ORDER BY dodać jeszcze ' Pld DESC ' ?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




może zwykły
  1. ORDER BY Pld DESC, punkty DESC, bilans DESC


Ten post edytował piotrooo89 14.12.2009, 22:10:43
Go to the top of the page
+Quote Post
aros
post
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.03.2008

Ostrzeżenie: (0%)
-----


Znalazłem rozwiązanie sam. Może komuś się przyda.

To co proponowaliście nie przejdzie. Ja nie chce uzyskać sortowania wg liczby meczów. Ja chcę zachować sortowanie wg liczby punktów, przy czym zależy mi, żeby na końcu byli Ci co mają 1600 pkt (taki jest poziom startu rankingu), ale nie rozegrali jeszcze ani jednego spotkania.

Idealnie rozwiązuje mój problem poniższe zapytanie:

$sql = "SELECT * FROM ranking,userki WHERE ranking.status=0 AND userki.userid = ranking.rankid ORDER BY CASE WHEN mecze > 0 THEN 0 ELSE 1 END, punkty DESC, bilans DESC LIMIT $s,100;";

Chyba tłumaczyć nie trzeba. Takie wirtualne kryterium sortowania rozwiązało sprawę.

Ten post edytował aros 11.01.2010, 00:33:10
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 09:44