Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Pobranie 10 wierszy ze środka tabeli
Demoneos
post 17.12.2011, 14:22:17
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Gdyby chodziło o pobranie 10 wierszy z początku lub końca tabeli, to oczywiście użyłbym limit 10. Natomiast gdy chcę pobrać gdzieś ze środka tabeli, to pierwszą rzeczą jaka mi przeszła na myśl, to wykorzystanie pola id:
  1. SELECT * FROM tabela WHERE id BETWEEN 50 AND 60

ale problem w tym, że gdy się usunie rekordy z tabeli, to id się nie przesuwa tylko pozostaje takie same, więc to opada.
Więc jak to zrobić?
1. Może zrobić jakieś dodatkowe pole "nr_kolejnego_wiersza" - przy wstawianiu nowego wiersza inkrementowałbym ilość dotychczasowych wierszy w tabeli i wpisał tą wartość do tego pola. Czy to dobry pomysł?
2. Drugim rozwiązaniem byłoby pokombinowanie w MySQL - najpierw wyświetlam np. od 50 wiersza do końca i z tego 10 pierwszych wierszy. Tylko jak do zaimplementować w MySQL?

Ten post edytował Demoneos 17.12.2011, 14:22:52


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Shili
post 17.12.2011, 14:33:34
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


  1. SELECT * FROM tabela LIMIT 10


To to samo, co:

  1. SELECT * FROM tabela LIMIT 0, 10

Zero to od którego rekordu, 10 to ile rekordów

http://dev.mysql.com/doc/refman/5.0/en/select.html
Wyszukaj sobie słów limit, są tam ładne przykłady poniżej smile.gif
Go to the top of the page
+Quote Post
Demoneos
post 27.12.2011, 11:49:19
Post #3





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Heh, no to będzie dużo prościej niż myślałem smile.gif

Cytat(Shili @ 17.12.2011, 14:33:34 ) *
  1. SELECT * FROM tabela LIMIT 0, 10


Chodzi mi generalnie o to, żeby pobierać 10 wierszy z tabeli. Jeżeli odczytuję wiersze od początku tabeli, to sprawa jest prosta, np.:
Pierwsza dziesiątka:
  1. SELECT * FROM tabela LIMIT 0, 10

Druga dziesiątka:
  1. SELECT * FROM tabela LIMIT 9, 10


A jeżeli chciałbym, żeby pobierał od końca tabeli? To znaczy jak pobrać np. ostatnią i przedostatnią dziesiątkę wierszy?


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.12.2011, 11:52:42
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. SELECT * FROM `tabela` ORDER BY `id` LIMIT 10


i analogicznie.
Go to the top of the page
+Quote Post
thek
post 27.12.2011, 11:55:44
Post #5





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




Ustawiasz ORDER BY z domyślnego kierunku na przeciwny. Domyślam się, że nie masz domyślnego sortowania, więc baza korzysta z klucza głównego rosnąco, czyli masz niejawne wywołanie ORDER BY id ASC... Zrób więc ORDER BY id DESC i teraz rób ten LIMIT jak Ci już napisano.


--------------------
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
Demoneos
post 27.12.2011, 12:15:45
Post #6





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Czyli np. aby otrzymać przedostatnie 10 wierszy poniższe zapytanie będzie prawidłowe?
  1. SELECT * FROM `tabela` ORDER BY `id` DESC LIMIT 9 10


Ten post edytował Demoneos 27.12.2011, 12:16:46


--------------------
Go to the top of the page
+Quote Post
thek
post 27.12.2011, 13:07:18
Post #7





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




A to nie prościej sprawdzić od razu zamiast pytać? wink.gif Wrzuć zapytanie do bazy i sprawdź to się dowiesz snitch.gif Tylko nie zapomnij o przecinku w LIMT (jak ma to miejsce powyżej).


--------------------
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

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: 24.07.2025 - 15:01