PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Ahoj, prosim proc nefunguje následující dotaz? Vrací 0 výsledků:
SELECT * FROM table WHERE ROWNUM BETWEEN 5 AND 50
a podobný dotaz s order by:
SELECT * FROM table WHERE ROWNUM BETWEEN 5 AND 50 ORDER BY
ID
kdy se nejdrive vybere mnozina vysledku a ta se nasledne setridi. ja vsak potrebuji nejdrive setridit data a pak z nich vybrat deset vysledku. Jak to udelat?
Prosim o presunuti do sekce Oracle, ktera v tuto chvili jeste neni vytvorena…
Predem diky.
Offline
SELECT t.*
FROM (SELECT t.*, RANK() OVER(ORDER BY t.id ASC) AS rank
FROM table t) t
WHERE t.rank BETWEEN 5 AND 50
ORDER BY t.id;
Offline
tomu dotazu vubec nerozumim, k cemu je tam ten rank()?
Offline
RANK() je analytická funkce, která ti očísluje řádky dle zadaných kritérií. V tomto případě dle sloupce ID. Tady jsou nějaké příklady: http://www.oracle-base.com/…unctions.php
Offline
Diky mrknu na to
Offline
Ještě jsem si vzpoměl na funkci ROW_NUMBER(), což je v tomto případě vhodnější řešení, viz. http://www.adp-gmbh.ch/…_number.html. I když s RANK() přes ID to bude fungovat také.
SELECT t.*
FROM (SELECT t.*, ROW_NUMBER() OVER(ORDER BY t.id ASC) AS row_number
FROM table t) t
WHERE t.row_number BETWEEN 5 AND 50
ORDER BY t.id;
Offline
simon napsal(a):
Ahoj, prosim proc nefunguje následující dotaz? Vrací 0 výsledků:
SELECT * FROM table WHERE ROWNUM BETWEEN 5 AND 50a podobný dotaz s order by:
SELECT * FROM table WHERE ROWNUM BETWEEN 5 AND 50 ORDER BY IDkdy se nejdrive vybere mnozina vysledku a ta se nasledne setridi. ja vsak potrebuji nejdrive setridit data a pak z nich vybrat deset vysledku. Jak to udelat?
Prosim o presunuti do sekce Oracle, ktera v tuto chvili jeste neni vytvorena…
Predem diky.
Odpoved najdes tady: http://www.oracle.com/…6asktom.html
Offline