vysek ze selectu
Karel Zak - Zakkr
zakkr na zf.jcu.cz
Úterý Listopad 2 15:47:20 CET 1999
On Tue, 2 Nov 1999, Honza Pazdziora wrote:
> > select ... from ... where ... and rownum between (10,20);
> >
> > coz presne splnuje Vase pozadavky.
>
> Nejde. Podminka rownum > neco neprojde (pro neco vetsi nez nula).
> Protoze prvni radek dostane 1, ale pokud nejde na vystup, tak 1
> nedostane. Cili nasledujici radek dostane 1, ale proto nejde na
> vystpu, a proto ho nedostane .. a tak.
>
> Navic to neni mozno pouzit s order by, cimz je to v podstate na nic.
>
> Resenim je nacist a nepotrebne zahodit, nebo si to dat do pomocne
> tabulky (coz uz ale vyzaduje uchovavani stavu a mazani).
Jak kde, ale v lepsich SQL (PostgreSQL:-) jde toto:
SELECT * FROM tab .... LIMIT 10 OFFSET 10;
Ale je to pochopitelne vysec aplikovana na podminky definovane pred LIMIT
(tedy order by, where..), ale nekdy je jednodusi udelat vysec a pak si to
sesortovat sam ...
A nebo pokud chcete podminky aplikovat na vysec (napriklad tu vysec si
setridit) tak nevim jak kde, ale v PgSQL lze udelat
SELECT * INTO TEMP tmp_tab FROM tab ... LIMIT 10 OFFSET 10;
SELECT * FROM tmp_tab ... ORDER BY neco;
Kazdopadne se lze (!) vyhnout prenosu a zahazovani nepotrebnych dat a do
klienta dostat jen to potrebne.
Jde toto v nejakych jinych SQL napr. MySQL? (tim si nechci nijak rypat, ale
uz jsem prestal tuto SQL sledovat)
Karel
------------------------------------------------------------------------------
Karel Zak <zakkr na zf.jcu.cz> http://home.zf.jcu.cz/~zakkr/
Kim Project: http://home.zf.jcu.cz/~zakkr/kim/ (process manager)
FTP: ftp://ftp2.zf.jcu.cz/users/zakkr/ (C/ncurses/PgSQL)
------------------------------------------------------------------------------
Další informace o konferenci Databases