IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Peter Janičina:9.6.2022 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.6.2022 15:13
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.6.2022 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.6.2022 21:18
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.6.2022 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.6.2022 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.