Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak skonstruować takie zapytanie?
seen
post 7.07.2011, 09:00:33
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.01.2011

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


Nie mogę sobie poradzić ze stworzeniem zapytania w MySQL.
Może ktoś z Was mi pomoże.

Chciałbym skonstruować zapytanie które sortuje rosnąco wg danej kolumny następnie wybiera 100 najnowszych wpisów i zwraca wynik posortowany malejąco wg tej samej kolumny?

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
thek
post 7.07.2011, 09:19:29
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Są dwie możliwości rozwiązania tego problemu.
1) Piszesz zwykłe zapytanie sortujące rosnąco i wybierające 100 wyników oraz kładziesz je potem jako podzapytanie do posortowania na odwrót, czyli coś w stylu:
  1. SELECT * FROM ( SELECT * FROM tabela ORDER BY kolumna ASC LIMIT 100 ) AS to_flip ORDER BY to_flip.kolumna DESC

2) Robisz tylko to podzapytanie pobierające 100 najnowszych i po stronie PHP sobie "czytasz" rekordy od ostatniego, czyli coś w deseń:
  1. $res = mysql_query( 'SELECT * FROM tabela ORDER BY kolumna ASC LIMIT 100' );
  2. if( $res ) {
  3. $num = mysql_num_rows( $res );
  4. if( $num > 0 ) {
  5. while( $num ) {
  6. $row = mysql_result( $res, $num-1 );
  7. $num -= 1;
  8. }
  9. }
  10. }
Nie bawiłem się tu w jakieś sprawdzania specjalne czy wynik istnieje itp. Tak samo wziąłem proste funkcje mysql_* by było widać co i jak, ale możesz też użyć PDO czy innych.

Kolega wyżej nie zauważył chyba, że sortowanie ma być w jednym zapytaniu raz w jedą, a raz w drugą stronę, a na dodatek niech pomyśli co jest podczas sortowania wykonywane domyślnie... ASC czy DESC, bo tego nie określił, a jest istotne w tym akurat zapytaniu...


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
seen
post 7.07.2011, 11:24:24
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.01.2011

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


Wielkie dzięki.
Użyłem pierwszej metody, wszystko śmiga jak trzeba.
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: 14.08.2025 - 15:47