Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Limit tylko na wybrana kolumne
Arriss
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
wookieb
post
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.
Go to the top of the page
+Quote Post
Arriss
post
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.
Go to the top of the page
+Quote Post
Mchl
post
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)
Go to the top of the page
+Quote Post
Arriss
post
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
Go to the top of the page
+Quote Post
Mchl
post
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...
Go to the top of the page
+Quote Post
phpion
post
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").
Go to the top of the page
+Quote Post
Arriss
post
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)
Go to the top of the page
+Quote Post
Mchl
post
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)
Go to the top of the page
+Quote Post
Arriss
post
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.
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: 24.08.2025 - 06:34