Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jak w MS Access pobrać N wierszy począwszy od wiesza M ?

128 views
Skip to first unread message

PakK_Pl

unread,
Jan 6, 2009, 11:11:20 AM1/6/09
to
Chodzi mi o zamiennik słowa LIMIT 3,5 z MySQL
Wiem, że można pobrać 10 pierwszych za pomocą SELECT TOP 10, ale jeśli chciałbym
pobrać 10 pierwszych począwszy od 4 ?
Coś w tym stylu:
SELECT TOP 10 SKIP 4 kolumna FROM tabela ORDER BY kolumna2
W MS SQL jest ROW_NUMBER(), ale tutaj to nie działa...


Marcin

unread,
Jan 6, 2009, 11:54:00 AM1/6/09
to
PakK_Pl pisze:
Dodaj (w kwerendzie) kolumnę z liczbą porządkową i dodaj dla niej
odpowiedni warunek.
Może jest łatwiejsze rozwiązanie ale musisz poczekać na wypowiedz
Accessowych ekspertów tej grupy.

M

PakK_Pl

unread,
Jan 6, 2009, 12:38:28 PM1/6/09
to
"Marcin" <mmano...@poczta.fm> wrote in message
news:gk02bj$qp0$1...@inews.gazeta.pl...

> Dodaj (w kwerendzie) kolumnę z liczbą porządkową i dodaj dla niej odpowiedni
> warunek.
> Może jest łatwiejsze rozwiązanie ale musisz poczekać na wypowiedz Accessowych
> ekspertów tej grupy.
>
> M

Tylko w jaki sposób mam dodać tą liczbę porządkową?
Póki co wymyśliłem coś takiego:
Będzie sobie tabela tymczasowa z jednym polem typu autonumerowanie oraz z dwiema
polami skopiowanymi z drugiej tabeli.
Czyli, co jakiś czas (gdy zmienią sią się dane w drugiej tabeli) to kasuje
tymczasową (bez skasowanie, autonumerowanie by przebiegało od ostatniej liczby,
tak będzie znowu od 1), tworzę ją ponownie i uruchamian kwerende dołączającą
dane z drugiej tabeli do tymczasowej (posortowane wedłuch ustalonych wcześniej
kryteriów).
Jeśli potem chcę pobrać jakieś dane to pobieram z tymczasowej pobrzez warunek
WHERE id BETWEEN 1 AND 10

Co myślicie o takim rozwiązaniu?


Marcin

unread,
Jan 6, 2009, 3:27:15 PM1/6/09
to

> Tylko w jaki sposób mam dodać tą liczbę porządkową?

Znasz tą stronę www.access.vis.pl?

Twój problem można rozwiązać np. w taki sposób:

SELECT (SELECT Count(*) FROM Tabela1 As T1 WHERE
Identyfikator<=Tabela1.Identyfikator ) AS LP, *
FROM Tabela1
WHERE ((((SELECT Count(*) FROM Tabela1 As T1 WHERE
Identyfikator<=Tabela1.Identyfikator )) Between 2 And 6));

Moja tabela ma kilka kolumn w tym pole Identyfikator z autonumerowaniem.
Rozwiązanie zaczerpnąłem z w/w strony, oto dokładny link:

http://www.access.vis.pl/war007.htm

Koniecznie przeczytaj bo są tam wymienione ograniczenia takiego
rozwiązania.

Pozdrawiam przy okazji autora strony.

M


PakK_Pl

unread,
Jan 6, 2009, 4:21:01 PM1/6/09
to

"Marcin" <mmano...@poczta.fm> wrote in message
news:gk0erh$h29$1...@inews.gazeta.pl...
>
>
> Znasz tą stronę www.access.vis.pl?

Nie znam, Accessa od niedawna uzywam - baza danych dla ASP.NET

> Twój problem można rozwiązać np. w taki sposób:
>
> SELECT (SELECT Count(*) FROM Tabela1 As T1 WHERE
> Identyfikator<=Tabela1.Identyfikator ) AS LP, *
> FROM Tabela1
> WHERE ((((SELECT Count(*) FROM Tabela1 As T1 WHERE
> Identyfikator<=Tabela1.Identyfikator )) Between 2 And 6));
>

No tak, tylko, że jesli chcę posortować według czegoś co może się powtarzać to
numeracja sie popsuje....
...ale dzięki w każdym razie za poświecony czas :)
Nie wiem, może lepiej po prostu sobie wczytywac wszystko po kolei jak leci z
kwerendy i potem omijać początkowe wiersze, których nie potrzebuje...

Nie rozumiem, jak mogli nie dodać takiej rzeczy jak numer wiersza....


KN

unread,
Jan 7, 2009, 6:30:31 AM1/7/09
to
On 6 Sty, 22:21, "PakK_Pl" <pak...@home.pl> wrote:
> "Marcin" <mmanowie...@poczta.fm> wrote in message

Nie dodali bo funkcjonalność tego prawie żadna ;-)

--
KN

PakK_Pl

unread,
Jan 7, 2009, 1:09:20 PM1/7/09
to
Zrobilem na tabeli:
CREATE TABLE wierszowa_tabela (wiersz AUTOINCREMENT, id_tabela INTEGER, PRIMARY
KEY (wiersz), FOREIGN KEY (id_tabela) REFERENCES tabela (id_tabela))
i potem INSERT do tej tabeli wybranych i posortowanych danych i mozna sobie
zrobic stronnicowanie na podstawie wiersza (BETWEEN wiersz x TO m) :)
Po kazdej aktualizacji tabeli, trzeba usuwac i tworzyc jeszcze raz tabele
wierszowa, ma to swoje wady (powolne tworzenie) i zalety (szybszy odczyt),
Mysle, ze powinno ujsc :-]


0 new messages