Ograniczenie ilości wyświetlanych danych
Albertos - 28-04-2006 00:51
Ograniczenie ilości wyświetlanych danych
Witam wszystkich. Jak w MSSQL 2000 ograniczyć ilość wyświetlanych wierszy? Wiem, że istnieje słowo kluczowe TOP i jest ok. Ale jak wyświetlić nie pierwszych klika wierszy ale wiersze np. od 100 do 150 ? Nie mogę zastosować klauzuli WHERE bo nie ma numerycznego klucza głównego :(
Pozdrawiam Albertos
mojeza - 28-04-2006 00:51
Klucz glowny (PK) wcale nie mui byc numeryczny, tak dlugo jak takowy jest sprawa jest dosyc prosta. Zakladam ze many tabele tblLudzie z PK SSN varchar(10):
SELECT TOP 50 * FROM tblLudzie WHERE SSN NOT IN (SELECT TOP 100 SSN FROM tblLudzie ORDER BY SSN) ORDER BY SSN
=?iso-8859-2?Q?Pawe=B3_Filipiak?= - 28-04-2006 00:51
=?iso-8859-2?Q?Re:_Ograniczenie_ilo=B6ci_wy=B6wietlanych_dany ch?=
"Albertos" <kroman@at.poczta.dot.fm> wrote in message news:e2qi3v$ji3$1@inews.gazeta.pl... > Witam wszystkich. > Jak w MSSQL 2000 ograniczyć ilość wyświetlanych wierszy? > Wiem, że istnieje słowo kluczowe TOP i jest ok. > Ale jak wyświetlić nie pierwszych klika wierszy ale wiersze np. od 100 do > 150 ?
Niestety łatwego rozwiązania nie ma, bo mssql w wersji 2000 nie obsługuje w sposób "natywny" stronicowania wyników. Można 1. uzyć tabeli tymczasowej (o ile uzywasz do wyciągania danych procedury składowanej) 2. zastosować zapytanie podane przez przedpiszcę - z tym, że jest ono wybitnie nieoptymalne. Klauzula"in" jest bardzo kosztowna w wykonaniu, nie wspominając o dwóch sortowaniach. Przy większej ilości rekordów będzie to bardzo powolne. Zresztą rozwiązanie z tabelą tymczasową też polegnie przy znacznej ilości rekordów, zwłascza im "dalsza" strona będzie żądana. W mssql wersja 2005 jest znana z innych baz funkcja row_number.
-- pozdrawiam, Paweł Filipiak
Sebastian - 28-04-2006 00:52
Użytkownik "Paweł Filipiak" <pfilipiak@poczta.fm> napisał w wiadomości news:e2r09c$det$1@atena.e-wro.net... > "Albertos" <kroman@at.poczta.dot.fm> wrote in message > news:e2qi3v$ji3$1@inews.gazeta.pl... >> Witam wszystkich. >> Jak w MSSQL 2000 ograniczyć ilość wyświetlanych wierszy? >> Wiem, że istnieje słowo kluczowe TOP i jest ok. >> Ale jak wyświetlić nie pierwszych klika wierszy ale wiersze np. od 100 do >> 150 ? > > Niestety łatwego rozwiązania nie ma, bo mssql w wersji 2000 nie obsługuje > w sposób "natywny" stronicowania wyników. Można > 1. uzyć tabeli tymczasowej (o ile uzywasz do wyciągania danych procedury > składowanej) > 2. zastosować zapytanie podane przez przedpiszcę - z tym, że jest ono > wybitnie nieoptymalne. Klauzula"in" jest bardzo kosztowna w wykonaniu, nie > wspominając o dwóch sortowaniach. Przy większej ilości rekordów będzie to > bardzo powolne. Zresztą rozwiązanie z tabelą tymczasową też polegnie przy > znacznej ilości rekordów, zwłascza im "dalsza" strona będzie żądana. > W mssql wersja 2005 jest znana z innych baz funkcja row_number.
Ewentualnie jest jeszcze rozwiazanie z podwojnym obrotem tablicy
SELECT * FROM (SELECT TOP 50 FROM (SELECT TOP 150 * FROM TABELA ORDER BY pole ASC) t1 ORDER BY pole DESC) t2 ORDER BY pole ASC
Mam nadzieje, ze nie namieszalem tych selektow. Pozdrawiam
Sebastian
Albertos - 29-04-2006 00:14
Dzięki wszystkim :)
Pozdrawiam Albertos
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
Połączenie bazy danych z wykonaniem polaczenia telefonicznego
[mssql] insert do tabeli na podstawie danych z innej tabeli
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|