![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 7.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ciezko bylo mi nawet zatytulowac temat. Potrzebuje zapytania ktore pokaze mi powiedzmy 20 osob z najwieksza iloscia punktow o statusie 1 ale jesli w meidzyczasie bedzie ktos o statusie 0 rowniez wyswietli. Limit ma sie konczyc na 20 osobie o statusie 1. Czyli jesli w srodku bedzie 5 osob o statusie 0 to wyswietli 25 wpisow. Wiem ze zagmatwane. Dziekuje za wszystkie porady i naprowadzenia. Nie pogardzilbym przykladowym zapytaniem.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To podaj strukture tabeli i przykładowe dane. Najlepiej w formie zapytania i wyjaśnij co to znaczy "w międzyczasie" bo nie wyraziłeś się dostatecznie jasno.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 7.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
SELECT * FROM tabela WHERE ranking<>'0' AND stat='1' ORDER BY ranking DESC LIMIT 20
wyswietli mi 20 pierwszysch osob w rankinu jednak mam tez ludzi ktorzy maja stat=0 i chce ich tez pokazac w rankingu jednak chce zeby ranking konczyl sie na 20 osobie o satusie 1 niezaleznie ile osob o statusie 0 ma wiecej punktow w rankingu. Dam przyklad 1 user 1 status 1 2 user 2 status 1 ..... 20 user20 status 1 a chce 1 user 1 status 1 2 user 2 status 0 ..... 5 user 5 status 0 ... 20 user20 status 1 21 userx status 1 22 usern status 1 chodzi mi zeby ranking konczyl sie na 20 osobie o danym statusie niezaleznie ile podrodze wyswietli osob o innym statusie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kod (SELECT 20 osób ze statusem 1)
UNION (SELECT osoby ze statusem 0) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 7.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Próbowalem i wyswietlilo mi cos typu
1 user stat 1 2 user stat 1 20 user stat 1 1 users stat0 2 user stat 0 20 users stat 0 czyli lacznie wyswietlio mi 40 osob nieposortowanych |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
I nie dasz rady dodać sortowania?
Kod SELECT * FROM
(SELECT 20 osób ze statusem 1) UNION (SELECT osoby ze statusem 0) ORDER BY... |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@Mchl:
Chyba źle zrozumiałeś problem. Nie jest on tak banalny jak się z pozoru wydaje. Zapewne chodzi o coś takiego (zamiast 20 przyjmuję 3 wpisy do pokazania): Wariant A: id | status 1 | 1 2 | 1 3 | 1 Wariant B: id | status 1 | 1 4 | 0 2 | 1 3 | 1 Po drodze wskakuje użytkownik o statusie 0, jednak w wyniku nadal mamy 3 rekordy ze statusem 1 (a tych ze statusem 0 jest tyle, ile jest ich "po środku"). |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 7.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dokladnie o to chodzi. Najtrudniej jest wytlumaczyc innym o co chodzi (IMG:style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
I sortowanie jest po jakowymś polu zwanym ranking, jak rozumiem?
To może tak? Kod (SELECT ... FROM tabela WHERE status = 1 ORDER BY ranking DESC LIMIT 20)
UNION (SELECT ... FROM tabela AS t1 INNER JOIN (SELECT ... FROM tabela WHERE status = 1 ORDER BY ranking DESC LIMIT 19,1) AS t2 ON t1.ranking <= t2.ranking WHERE status =0 ORDER BY ranking DESC) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 7.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cos nie dzialalo mi to zapytanie. Po ponownym przemysleniu postawnowilem liczyc ludzi z odpowiednim statusem a pozniej dac ifa i jesli jest wiecej to break; i po sprawie. Dzieki wszystkim za pomoc.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 06:34 |