ďťż
 
Ograniczenie ilości wyświetlanych danych ďťż
 
Ograniczenie ilości wyświetlanych danych
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ptsite.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com