Adott az alábbi mysql kód:
select * from termekek where 1 limit 20,10
Ezt szeretném mssql-ben lefuttatni. Létezik rá valami elegáns megoldás, ami könnyen paraméterezhető php-ból?
- 1893 megtekintés
Hozzászólások
Ha legalább a TOP mellé lenne egy BOTTOM is, máris egyszerű lenne. De nincs...
- A hozzászóláshoz be kell jelentkezni
nem értek mssql-hez, de ezt a példát találtam
SELECT * FROM
(SELECT row_number() OVER (ORDER BY column) AS rownum, column2, column3, .... columnX FROM table) AS A
WHERE A.rownum BETWEEN 100 AND 200
elvileg mssql 2005 fölött működik
- A hozzászóláshoz be kell jelentkezni
Order by hasznalataval meg lehetne csinalni, de a feltett kerdesben nem volt semmilyen rendezes.
Esetleg az jutott most eszembe, hogy az mssql_data_seek segitsegevel oda tudnad mozgatni a kurzort ahova akarod. Tehat pl.
select top 30 * from termekek
, es utana
mssql_data_seek ($result_identifier , 20)
.
- A hozzászóláshoz be kell jelentkezni
Egy a gond ezzel:
"moves the internal row pointer of the MS SQL result ..." vagyis a mar _leszedett_ sorok kozt tudsz mozogni, a db szerver fele uj query nem megy, tehat vagy eloszedsz minden sort, es kikalkulalod, hogy hova kell essel, vagy eloszeded az osszes id-t, kikalkulalod, hogy hova kell essel, es meg egy queryvel leszeded az adott id-ju sorokat.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Hozzateszem, MSSQL-hez nem ertek, de AFAIK az Oracle ROWNUM-s szenvedesehez hasonloan kell megoldani ott is.
(Egyebkent SQL standardba igazan belerakhattak volna a LIMIT .. OFFSET .. jellegu zaradekot.)
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Tess egy viszonylagosan altalanosan hasznalhato modszer:
$query = '
WITH paging AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY '.$orderBy.') AS \'row_number\', *
FROM
(
'.$query.'
) LIST
)
SELECT
(
SELECT
MAX(row_number)
FROM
paging
) record_count, *
FROM
paging
WHERE
row_number BETWEEN '.$offset.' AND '.($offset + $itemsPerPage).'
';
A megfelelo valtozokat helyettesitsd be es akkor minden szipi szupi lesz. De a google meg mindig gyorsabb nalam :)
------------------
http://www.youtube.com/watch?v=Sf8cM7f6P2I
- A hozzászóláshoz be kell jelentkezni