Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> proste zapytanie sql, a jednak nie wiem jak je rozwiązać
rogeros
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 10.04.2002
Skąd: Pruszków

Ostrzeżenie: (10%)
X----


Witajcie mam dosyć prosty problem ale niestety nie przychodzi mi nic do głowy jak go rozwiązać po stronie mysql.

Otóż mam bazę danych z punktacją użytkowników.

id_user | nazwisko | punkty

i teraz potrzebuje wyciagnąć 10-ciu użytkowników którzy mają najwiekszą ilość punktów ale posortować ich po nazwisku.


za pomoc z góry dziękuje.
Go to the top of the page
+Quote Post
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


  1. SELECT *
  2. FROM ( ##PODZAPYTANIE## ) AS tabela
  3. ORDER BY nazwisko ASC


A w ##PODZAPYTANIU## pobierasz 10 osób z największą ilością punktów.
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. SELECT * FROM userzy ORDER BY PUNKTY DESC, nazwisko LIMIT 10
Go to the top of the page
+Quote Post
rogeros
post
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 10.04.2002
Skąd: Pruszków

Ostrzeżenie: (10%)
X----


Dziękuje Kicok Twoje rozwiązanie działa poprawnie.

Natomiast rozwiązanie wookieb jakoś nie działa.


A czy jest szansa do zapytania dorobić jeszcze jeszcze zajmowana pozycje spośród wyników.
Także chciałbym to zrobić po stronie bazy danych.

Otóż chciałbym otrzymać taki wynik

Adamiak, pkt 30, 2 miejsce
Bartczak, pkt 50, 1 miejsce
Woźniak, pkt 5, 3 miejsce
Go to the top of the page
+Quote Post
bliitz
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

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


  1. <?php
  2. $query = mysql_query( 'SELECT * FROM ##PODZAPYTANIE## AS tabela ORDER BY nazwisko ASC' );
  3. while( $zm = mysql_fetch_array( $query ) ) {
  4. echo $zm[ 'imie' ]. ', ';
  5. echo $zm[ 'pkt' ]. ', ';
  6. echo $zm[ 'miejsce' ];
  7. }
  8. ?>


taka pętla powinna załatwić sprawę, nazwy w nawiasach klamrowych mają odpowiadać nazwą pól w tabeli

Ten post edytował bliitz 2.09.2008, 08:30:08
Go to the top of the page
+Quote Post
rogeros
post
Post #6





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 10.04.2002
Skąd: Pruszków

Ostrzeżenie: (10%)
X----


(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wyświetlić wyniki to ja potrafię (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) dziękuje bardzo Bliitz. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Mi chodzi o zapytanie mysql.

a dokładnie chyba o ##podzapytanie##
Go to the top of the page
+Quote Post
Kicok
post
Post #7





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


http://nospor.pl/mysql-faq-n25.html#faq-6

lub w jednym zapytaniu:
  1. SELECT t.nazwisko, t.punkty, @i := @i + 1 AS miejsce
  2. FROM tabela t
  3. JOIN ( SELECT @i := 0 ) i
Go to the top of the page
+Quote Post
rogeros
post
Post #8





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 10.04.2002
Skąd: Pruszków

Ostrzeżenie: (10%)
X----


to znowu ja.
drodzy koledzy mam jeszcze jeden kłopot.


otóż. chciałbym sprawdzić na którym miejscu jest aktualnie Jan Nowak.
kombinuje w phpmyadmin z zapytaniami i nic mi nie przychodzi do głowy.

czy ktoś wie jak takie zapytanko stworzyć?
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Policz ilu jest userow przed nowakiem, tzn ilu jest z iloscia punktow wieksza [badz rowna- zalezy jak sobie ustalisz] od nowaka.
Go to the top of the page
+Quote Post
rogeros
post
Post #10





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 10.04.2002
Skąd: Pruszków

Ostrzeżenie: (10%)
X----


witajcie.
a jednak udało mi się.
Odpowiadam sam na swoje pytanie ponieważ może komuś się to przydać.

  1. SET @id=67,@nr = 0, @idnr = 0;
  2.  
  3. SELECT @idnr AS nr, id_user, nazwisko, imie, suma FROM
  4. (SELECT @nr:=@nr+1,IF(id_user=@id, @idnr := @nr,@idnr=@idnr),id_user, nazwisko, imie, k1, k2, k3, k4, k5, k6, k7, k8, k1+k2+k3+k4+k5+k6+k7+k8 AS suma FROM users ORDER BY suma DESC) podsel WHERE podsel.id_user = @id;


@id - to id usera ktorego chcemy sprawdzic miejsce
k[1-8] konkurencja 1 - 8.
suma - suma punktow we wszystkich konkurencjach.
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: 22.08.2025 - 17:52