Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: proste zapytanie sql
Forum PHP.pl > Forum > Bazy danych > MySQL
rogeros
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.
Kicok
  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.
wookieb
  1. SELECT * FROM userzy ORDER BY PUNKTY DESC, nazwisko LIMIT 10
rogeros
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
bliitz
  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
rogeros
smile.gif wyświetlić wyniki to ja potrafię smile.gif dziękuje bardzo Bliitz. winksmiley.jpg

Mi chodzi o zapytanie mysql.

a dokładnie chyba o ##podzapytanie##
Kicok
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
rogeros
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ć?
dr_bonzo
Policz ilu jest userow przed nowakiem, tzn ilu jest z iloscia punktow wieksza [badz rowna- zalezy jak sobie ustalisz] od nowaka.
rogeros
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.