Uzyskanie pozycji rekordu na bazie jego ID
sf - 22-07-2006 04:32
Uzyskanie pozycji rekordu na bazie jego ID
Witam, Posiadam zapytanie SQL, które generuje X wyników. Na pozycji Y znajduje się rekord posiadający identyfikator AAA. Chciałbym uzyskać informację o tym, na którym miejscu znajduje się ów rekord posiadając TYLKO zapytanie i identyfikator tego rekordu.
Taka rzecz przydaje się przy konstruowaniu następny / poprzedni rekord - gdy dostajemy identyfikator rekordu i wiemy przy jakich warunkach mamy wykonać zapytanie SQL.
Pozdrawiam, Paweł Malisak 'stormfly'
-- http://www.hyh.pl
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
sf - 22-07-2006 04:33
Zapomniałem dodać, że pracuje na bazie PostgreSQL 7.4.
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 22-07-2006 04:33
sf wrote: > Witam, > Posiadam zapytanie SQL, które generuje X wyników. Na pozycji Y znajduje się > rekord posiadający identyfikator AAA. Chciałbym uzyskać informację o tym, na > którym miejscu znajduje się ów rekord posiadając TYLKO zapytanie i > identyfikator tego rekordu. > > Taka rzecz przydaje się przy konstruowaniu następny / poprzedni rekord - gdy > dostajemy identyfikator rekordu i wiemy przy jakich warunkach mamy wykonać > zapytanie SQL.
select count(*) from tabela where id <= dane_id;
Przy założeniu, że sortujesz po id.
-- P.M.
sf - 22-07-2006 04:33
Paweł Matejski napisał(a): > select count(*) from tabela where id <= dane_id; > > Przy założeniu, że sortujesz po id.
Sposób powinnien być niezależny od sortowania.
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Wojtek pBT (prac) - 22-07-2006 04:33
sf napisał(a): > Witam, > Posiadam zapytanie SQL, które generuje X wyników. Na pozycji Y znajduje się > rekord posiadający identyfikator AAA. Chciałbym uzyskać informację o tym, na > którym miejscu znajduje się ów rekord posiadając TYLKO zapytanie i > identyfikator tego rekordu. > > Taka rzecz przydaje się przy konstruowaniu następny / poprzedni rekord - gdy > dostajemy identyfikator rekordu i wiemy przy jakich warunkach mamy wykonać > zapytanie SQL.
W relacyjnych BD pozycja rekordu nie ma znaczenia. to ty ją określasz wykonując sortowanie. Paweł podał ci rozwiązanie, + use /dev/brain
Hint: każde zapytanie możesz posotować wg zadanych kryteriów. W każdej sytuacji.
ps.: w PG narzekają na count(*) Nie wiem, jak to się ma w aktualnych wersjach, ale całkiem niedawno było bardzo powolne
pBT
Marcin Piotr Grondecki - 23-07-2006 04:38
Dnia 21.07.2006 sf <stormfly@gazeta.SKASUJ-TO.pl> napisał/a: > Paweł Matejski napisał(a): >> select count(*) from tabela where id <= dane_id; >> Przy założeniu, że sortujesz po id. > Sposób powinnien być niezależny od sortowania. W SQL'wych klimatach powyższe Twoje zdanie można przełożyć na: podaj, na której pozycji w ciągu liczba naturalnych jest liczba 5, niezależnie od tego, jak uporządkowaliśmy ciąg. W SQL nie określa się pozycji/lokalizaji/numeru krotki bez określonego sposobu porządkowania. -- ojciec
Artur Muszynski - 23-07-2006 04:38
sf wrote: > Witam, > Posiadam zapytanie SQL, które generuje X wyników. Na pozycji Y > znajduje się rekord posiadający identyfikator AAA. Chciałbym uzyskać > informację o tym, na którym miejscu znajduje się ów rekord posiadając > TYLKO zapytanie i identyfikator tego rekordu. > > Taka rzecz przydaje się przy konstruowaniu następny / poprzedni > rekord - gdy dostajemy identyfikator rekordu i wiemy przy jakich > warunkach mamy wykonać zapytanie SQL.
Nie podałeś, z jaką bazą masz do czynienia. Twój problem można rozwiązać przez rownum, funkcję, procedurę itp. PS: Miałem podobny problem na MySQL'u - chodziło o przypisanie strony do ID. Nie chciało mi się walczyć i zrobiłem po prostu pętelkę na kliencie.
artur
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?=
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
=?ISO-8859-2?Q?WY=B6wietlenie_rekord=F3w_pocz=B1wszy_od_?==?I SO-8859-2?Q?danej_litery=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 ?=
[pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?=
[MySQL]: Dodanie zliczania =?ISO-8859-2?Q?rekord=F3w_do_rozb?==?ISO-8859-2?Q?udowanego_zapytania?=
Liczba =?ISO-8859-2?Q?odpowiadaj=B1cych_rekord=F3w_z_drugi?==?ISO-8859-2?Q?ej_tabeli?=
zanotowane.pldoc.pisz.plpdf.pisz.plfantazia.htw.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 |
|