mssql +zakres
Krzysztof Przybyła - 11-12-2005 17:33
mssql +zakres
w jaki sposób mozna wyznaczyc ograniczyć zbiór wynikowy dla zakresu wyniku od 1 do 10 rekordu to mozna uzyć top
select cos.* from cos where cos.a=cos.b
zwraca zestaw powiedzmy 5000 rekordów
a jak wyznaczyć od 11 do 20 rekordu zeby zwrócił mi 10 rekordów z wyniku
potrzebuję to do własnego mechanizmu fetchowania danych dla przewijania listy gdzie lista posiada 10 elementów
Sebastian - 11-12-2005 17:33
Użytkownik "Krzysztof Przybyła" <k.przybyla@wp.pl> napisał w wiadomości news:dnh03c$a22$1@nemesis.news.tpi.pl... >w jaki sposób mozna wyznaczyc ograniczyć zbiór wynikowy dla zakresu wyniku > od 1 do 10 rekordu to mozna uzyć top > > select cos.* > from cos > where cos.a=cos.b > > zwraca zestaw powiedzmy 5000 rekordów > > a jak wyznaczyć od 11 do 20 rekordu zeby zwrócił mi 10 rekordów z wyniku >
Jak mowimy o kolejnosci to tylko w przypadku kiedy mamy ustalony porzadek powiedzmy po polu id.
1 rozwizanie:
SELECT TOP 10 * FROM (select TOP 20 cos.* from cos where cos.a=cos.b ORDER BY id) ORDER BY id DESC
2 rozwiazanie:
CREATE TABLE ##pom (porzadkowa IDENTITY(1,1), <kolumny tabeli cos>)
INSERT INTO ##pom SELECT * FROM cos WHERE cos.a = cos.b ORDER BY id
SELECT <kolumny tabeli cos> FROM ##pom WHER porzadkowa >10 AND poszadkowa <= 20
Sebastian
Jester - 13-12-2005 09:34
Krzysztof Przybyła napisał(a):
>a jak wyznaczyć od 11 do 20 rekordu zeby zwrócił mi 10 rekordów z wyniku > > > Jeżeli koniecznie chcesz to osiągnąć jednym zapytaniem to niestety ale w MSSQL będzie to chyba musiało być coś w stylu:
--(od 11 do 20)
select top 10 cos.* from cos where cos.a=cos.b and cos.pole_id not in (select top 10 c.pole_id from cos c where cos.a=cos.b order by cos.c) order by cos.c;
--(od 21 do 30)
select top 10 cos.* from cos where cos.a=cos.b and cos.pole_id not in (select top 20 c.pole_id from cos c where c.a=c.b order by c.c) order by cos.c;
itd.
-- Pozdrawiam Jester
Krzysztof Raczkowski - 13-12-2005 09:34
Krzysztof Przybyła wrote: > w jaki sposób mozna wyznaczyc ograniczyć zbiór wynikowy dla zakresu wyniku > od 1 do 10 rekordu to mozna uzyć top > > select cos.* > from cos > where cos.a=cos.b > > zwraca zestaw powiedzmy 5000 rekordów > > a jak wyznaczyć od 11 do 20 rekordu zeby zwrócił mi 10 rekordów z wyniku > > potrzebuję to do własnego mechanizmu fetchowania danych > dla przewijania listy gdzie lista posiada 10 elementów >
To już było wiele razy... osobiście nie próbowałem ale jakby tak założyć taki kursor ?
DECLARE cursor_name CURSOR GLOBAL for ....
czy to nie rozwiązuje sprawy lepiej niż różne podzapytania ? a dodatkowo mamy opcję aby tak stworzony kursor był statyczny...
-- Pozdrawiam Krzysztof Raczkowski
Krzysztof Przybyła - 13-12-2005 09:34
a czy jest możliwe okresenie od do dla fetch Użytkownik "Krzysztof Raczkowski" <raczkowk@wytnij-poczta.wp.pl> napisał w wiadomości news:dni6ro$al9$2@nemesis.news.tpi.pl... > Krzysztof Przybyła wrote: >> w jaki sposób mozna wyznaczyc ograniczyć zbiór wynikowy dla zakresu >> wyniku >> od 1 do 10 rekordu to mozna uzyć top >> >> select cos.* >> from cos >> where cos.a=cos.b >> >> zwraca zestaw powiedzmy 5000 rekordów >> >> a jak wyznaczyć od 11 do 20 rekordu zeby zwrócił mi 10 rekordów z wyniku >> >> potrzebuję to do własnego mechanizmu fetchowania danych >> dla przewijania listy gdzie lista posiada 10 elementów >> > > To już było wiele razy... osobiście nie próbowałem ale jakby tak założyć > taki kursor ? > > DECLARE cursor_name CURSOR GLOBAL for > ... > > czy to nie rozwiązuje sprawy lepiej niż różne podzapytania ? a dodatkowo > mamy opcję aby tak stworzony kursor był statyczny... > > -- > Pozdrawiam > Krzysztof Raczkowski
Krzysztof Raczkowski - 13-12-2005 09:34
Krzysztof Przybyła wrote: > a czy jest możliwe okresenie od do dla fetch
A czy zajrzałeś do dokumentacji ??
-- Pozdrawiam Krzysztof Raczkowski
Krzysztof Przybyła - 13-12-2005 09:35
z dokumentacji wywnioskowalem ze zawsze jest zwracany jeden rekord a dla zakresu mozna by było zrobic petle Użytkownik "Krzysztof Raczkowski" <raczkowk@wytnij-poczta.wp.pl> napisał w wiadomości news:dnk7hn$4el$1@nemesis.news.tpi.pl... > Krzysztof Przybyła wrote: >> a czy jest możliwe okresenie od do dla fetch > > A czy zajrzałeś do dokumentacji ?? > > -- > Pozdrawiam > Krzysztof Raczkowski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
[MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?=
MSSQL Express czy Oracle Express
MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
[MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?=
[MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?=
Pobierananie danych z innej bazy danych w MSSQL
Migracja MSSQL 2005 CTP na 2005 Express
zanotowane.pldoc.pisz.plpdf.pisz.plfelgiuzywane.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 |
|