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