stronicowanie [select z klauzulą LIMIT] |
stronicowanie [select z klauzulą LIMIT] |
6.12.2006, 13:43:52
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 5.11.2006 Skąd: Poznań Ostrzeżenie: (0%) |
Mam takie pytanie...
W MySQL jest możliwość zrobienia zapytania SELECT i dodania do niej klauzuli LIMIT. Pozwala to na pobranie jakiejś listy danych, a następnie wyświetlenie jedynie tylu wyników ile jest żadana (dzięki LIMIT). Natomiast w MSSQL istnieje tylko klauzula TOP, która pokazuje odpowiednią ilość wyników, ale tylko z samej góry (nie ma możliwości pobrania np. środkowych danych). Jest mi to potrzebne do stworzenia stronicowania w php. W MySQL zapytanie można zrobić np. tak: SELECT * FROM tabela WHERE tabela.pole=wartość LIMIT 100,20 Daje to taki wynik, że najpierw jest pobrany cały SELECT, a następnie wyświetlony tylko zbiór 20 wyników dopiero od 100 wiersza - czyli wyświetlane są wiersze od 100 do 120. Więc czy istnieje taka możliwość MSSQL? Oprócz korzystania z funkcji php mssql_data_seek(); ? Udało mi się oczywiście stworzyć stronicowanie, ale potrzeba do tego ok. 5-6 zmiennych i dosyć mocna kombinacja... Może istnieje jakaś łatwiejsza metoda na pobranie wyników nie od początku, ale od środka? |
|
|
8.12.2006, 12:18:12
Post
#2
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 16.12.2003 Skąd: Tychy Ostrzeżenie: (0%) |
-------------------- |
|
|
11.12.2006, 12:58:26
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 5.11.2006 Skąd: Poznań Ostrzeżenie: (0%) |
He he:) Dobre:)
Dzięki! |
|
|
14.12.2006, 14:16:54
Post
#4
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) |
obowlewam nad tym że microsoft nie udostępnił odpowiednika dla LIMIT w MySql Ten post edytował jastu 14.12.2006, 14:27:33 -------------------- Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
|
|
|
18.12.2006, 14:11:42
Post
#5
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 5.11.2006 Skąd: Poznań Ostrzeżenie: (0%) |
Cytat
Trzeba jeszcze dodać po drugim select z jakiej tabeli należy pobrac dane. A tak w ogóle to skrypcik działa:) Czyli:
|
|
|
18.12.2006, 14:15:41
Post
#6
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) |
Działa , tylko wyświetla w odwrotnej kolejności Jestem rozczarowany brakiem funkcji (polecenia) rozwiązującej ten problem (stronnicowania)
-------------------- Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
|
|
|
20.12.2006, 09:11:51
Post
#7
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 5.11.2006 Skąd: Poznań Ostrzeżenie: (0%) |
Pozamieniaj sortownie.
Tylko nadal jest problem, bo ten TOP 120 musi iść od drugiej strony... Więc aby pobrać drugie 20 wierszy SQL musi najpierw pobrać prawie wszystkie wiersze, a następnie zwrócić tylko 20 ostatnich... Co jak pisałeś - jest irytujące... Ja zrobiłem inny trochę mechanizm... Ale jest baaardzo zakręcony.. Jest tam 5 dodatkowych zmiennych i korzystam z mssql_data_seek... Tylko, że każde wyświetlenie jakiejś ilości danych na stronie wymaga najpierw pobrania całego zbioru wyników!! a potem zwrócenia jakiejś ilości.. Więc wolę się jednak pobawić powyższym zapytaniem.. Przynajmniej część stron z wynikiami nie będzie pobierała całego zbioru wyników.... Ten post edytował ghash 20.12.2006, 09:13:08 |
|
|
Wersja Lo-Fi | Aktualny czas: 14.05.2024 - 07:56 |