Optimalizace vyberu

Jan Serak sherry na pikebo.cz
Čtvrtek Březen 1 08:44:42 CET 2001


Pavel Tyrner wrote:
> 
> > >
> > > Muze mi nekdo poradit elegantni reseni?
> >
> > Ne, pokud presneji nepopisete, jake produkty chcete. Chcete ten
> > nejblizsi k 10kKc, absolutnim rozdilem? Nebo chcete dva, jeden drazsi
> > a jeden levnejsi, co jsou nejbliz? Nebo chcete vyrobky v rozmezi 10 %
> > nahoru a dolu? Nebo?
> 
> Omlouvam se, jsem tim resenim problemu uz tak zaujaty, ze se mi muj pops
> zdal jasny.
> 
> Takze: potrebuju jakekoliv produkty, ktere vyhovuji podmince:
> 
> jsou od onoho vyrobce, jsou uz na sklade datumu nejblize nasledujicimu,
> ktery zadam ve formulari, a jsou nejbliz zadane cene a to z obou stran
> (shora i sdola), pricemz cim mensi rozdil v cene, tim vetsi prioritu
> zobrazeni zaznam ma.
> 
> Nemohu vsak pouzit %, nebot potrebuju, aby kdyz zadam cenu treba 10 tisic a
> on v databazi bude nejblizsi vyrobek za 3000, tak mi to samozrejme nabidlo
> tendle, nebot 10% rozptyl ho samozrejme nezachyti.
> 
> Potrebuju nejaky libovolny pocet zaznymu, maximalne vsak 15 (limit 15 bych
> umel :)
> 
> Tedy priklad:
> Vyrobek A | 20.12.2000 |   4000 | Vyrobce VT
> Vyrobek B | 20.11.2000 |   4000 | Vyrobce VT
> Vyrobek C | 20.12.2000 |   7000 | Vyrobce BB
> Vyrobek D | 20.12.2000 | 12000 | Vyrobce VT
> Vyrobek E | 20.12.2000 | 18000 | Vyrobce VT
> 
> Ve formulari uzivatel zada:
> Chci vsechy od firmy VT, s datumem cca 01.12.2000, cena 7.000 Kc, zobrazit
> vyhovujici 2 zaznamy (pro ucely prikladu si udelame limit 2):
> 
> Vysledek dotazu by mel byt asi takovyto:
> Vyrobek A | 20.12.2000 |   4000 | Vyrobce VT
> Vyrobek D | 20.11.2000 | 12000 | Vyrobce VT
> - protoze rozdil v cene mezi pozadavkem a cenou jsou jen 3000, ma prioritu
> vyrobek A
> 
> Dotazu nevyhovuji - duvod:
> Vyrobek B | 20.11.2000 |   4000 | Vyrobce VT - prijaty na sklad pred
> pozadovanym datumem
> Vyrobek C | 20.12.2000 |   7000 | Vyrobce BB - jiny vyrobce
> 
> Vyrobek E | 20.12.2000 | 18000 | Vyrobce VT - predchozi 2 produkty uz
> vyhovely zaznamu, takze ho nepotrebuji zobrazovat.
> 
> Tot vse, myslite, ze se to da resit nejakym rozumnym zpusobem?

order by abs(cena_vyrobku-cena_pozadovana)

						Jan Serak


Další informace o konferenci Databases