Vyber dat podle poradi

Karel Zak zakkr na zf.jcu.cz
Pondělí Březen 26 10:44:58 CEST 2001


On Mon, Mar 26, 2001 at 10:22:03AM +0200, Michal Krause wrote:
> On 26/03/2001, Karel Zak wrote:
> 
> > > Samozrejme, ze poradi neni pole tabulky, to je treba dynamicky
> > > vytvorit podle hodnoty. Ja pak potrebuji vybrat treba radky, pro nez
> > > plati, ze (poradi>=2 and poradi<=4).
> > > Zkousel jsem ruzne hratky s uzivatelskymi promennymi, ale k
> > > pozadovanym vysledkum to nevedlo. Doposud jsem to delal tak, ze jsem
> > > SELECToval vse a poradi vyresil az v ramci programu, ale jak se ta
> > > tabulka postupne rozrusta, neni to uplne idealni. Napadlo by nekoho,
> > > jak tenhle proces zoptimalizovat?
> > 
> > Bud pouzit SQL server majici LIMIT a OFFSET a nebo se pokust pouzit
> 
> Priznam se, ze ted nerozumim. MySQL LIMIT ma, ale nejak mi unika, jak
> toho v tomto pripade vyuzit? Nebo je to jiny LIMIT?

 SELECT * FROM xxx ... LIMIT 5 OFFSET 10;

 vrati vyrez z vysledeku selectu v rozmezi radek 10 az 15.

> > temp tabulku a resit to dvema dotazama.
> 
> Tohle reseni by bylo pouzitelne, ale problem vidim hlavne v tom, jak
> vytvorit to pole s poradim.

 To je pravda, to mne nenapadlo. Mozna udelat tu temp tabulku s nejakym
auto-increment sloupcem.


Uf, ted koukam do manualu 3.22.25 a tam je 

	[LIMIT [offset,] rows]
 
nejde to pouzit?

Manual:

* The LIMIT clause can be used to constrain the number of rows returned
  by the SELECT statement. LIMIT takes one or two numeric arguments. If
  two arguments are given, the first specifies the offset of the first
  row to return, the second specifies the maximum number of rows to
  return. The offset of the initial row is 0 (not 1).

 mysql> select * from table LIMIT 5,10;  # Retrieve rows 6-15

 If one argument is given, it indicates the maximum number of rows to
 return.

 Nebo myslis neco jineho?

> ale nepovedlo se mi to dat dohromady. Zkousel jsem neco jako:
> 
> SELECT IF(@prev_val<>hodnota, @pos:=(@pos + 1), @pos), hodnota,

 Proboha to tam opravdu jde pouzit IF?
	 ... videl nekdo od MySQL nejaky standard!?

 Co treba:	 CASE WHEN ... ELSE .. END

 
			Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Databases