Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Fetch zaznamov od do v Oracle 10 s podmienkou

Aktivity
Avatar
Peter Janičina:9. června 15:13

Caute, mam grid a chcem don nacitavat postupne zaznami z Oraclu, ale ked mam podmienku tak to nefunguje dobre a ani dostatocne rychlo

Zkusil jsem: SELECT * FROM (SELECT v.*, ROW_NUMBER() OVER (ORDER BY 1) R FROM {TableName} v) WHERE R BETWEEN {100} AND {200} AND {podmienka}

Chci docílit: aby ked vyberiem zaznami od 100 do 200 a dam tam podmienku pricom podla samotnej podmienky mi vyberie iba 3 zaznami tak nevyberie nic iba keby tam bolo do 1 do100. Chcem aby vyber zaznamov od do korenspodoval s podmienkou.
Peter

 
Odpovědět
9. června 15:13
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9. června 21:18

Ja moc oracle nemam rad, protoze jednoduche veci se tam delaji slozitym kodem :) Ale, na prvni pohled mne zarazi tva konstrukce. Napis priklad celeho toho dotazu, a popis, co by mel delat.
Totiz, obvykle chces (vybrat zaznamy podle podminky) a pak (filtrovat pro listovani od-do).
Jenze, tve podminky jsou opacne, nejdriv (ocislujes tabulku), pak (oceses tabulku na zaznamy 100-200) a pak aplikujes jeste dalsi (podminku). Cili, domnivam se, ze tva logika je jakasi sporne pochybna :)

 
Nahoru Odpovědět
9. června 21:18
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9. června 21:28

Navic, samozrejme, kdyz celou tabulku ocislujes a naklonujes, Take, nevim, jak moc se da pak pracovat s nejakymi indexy u toho klonu? Bez indexu to muze delat pomalu.

Treba by to melo vypadat nejak takto:

SELECT *
FROM   sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY

SELECT * FROM
(
   SELECT t.*, Row_Number() OVER (ORDER BY name) MyRow FROM sometable t WHERE ... ORDER BY...
)
WHERE MyRow BETWEEN 10 AND 20;
 
Nahoru Odpovědět
9. června 21:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.