Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobranie ilości rekordów do spełnienia warunku
chomiczek
post 9.12.2009, 18:26:44
Post #1





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


W jaki sposób można zrobić zapytanie, które powinno zwrócić mi pozycje w bazie danych..

a mianowicie interesuje mnie zapytanie typu:
  1. SELECT * FROM `nazwa` ORDER BY `jakasWartosc`

ale połączone z zapytanie
  1. SELECT * FROM `nazwa` WHERE `user` = 'jakasNazwa' LIMIT 1


Czyli tak naprawdę posortowanie całej tabeli wg. jakaswartosc, a następnie zwrócenie kolejnej pozycji zliczania, która spełni drugi warunek, czyli user == 'jakasNazwa'

Można to zrobić w zapytaniu czy trzeba w PHPie? W PHP można bez problemu, ale może da radę 1 zapytaniem.

Ogólnei potrzebuje tylko, żeby otrzymać np. 7658, która będzie odzwierciedlała kolejny rekord po zastosowaniu SORTa

Ten post edytował chomiczek 9.12.2009, 18:27:24


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
Mchl
post 9.12.2009, 18:44:54
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Da się, aczkolwiek problem jest nietrywialny. Szukaj w Google 'MySQL ranking'
Go to the top of the page
+Quote Post
kabot
post 17.12.2009, 19:12:25
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.12.2009

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


Witam,
  1. SET @row:=0;
  2. SELECT * FROM (
  3. SELECT @row:=@row+1 AS rank, * FROM nazwa ORDER BY jakasWartosc
  4. ) tab
  5. WHERE user = 'jakasNazwa'

Główny problem z tym jest taki, że where nie wykorzystuje indeksów. Zamiast gwiazdek proponowałbym wstawić konkretne nazwy kolumn.
pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:53