Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak skonstruować takie zapytanie?
Forum PHP.pl > Forum > Bazy danych > MySQL
seen
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
thek
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...
seen
Wielkie dzięki.
Użyłem pierwszej metody, wszystko śmiga jak trzeba.
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.