Autor Zpráva
Limit
Profil *
Mám mysql dotaz který mi vybere z tabulky CCA 10 záznamů a ty seřadí podle čísla pomocí LIMIT 0,5 mu řeknu aby mi jich vytáhl jen 5,

LIMIT 0,5 zařídí že to bere 5 záznamů od nultého prvku, ale co když potřebuji aby mě to vzalo 5 záznamů od konce?

tedy při deseti záznamech by to bylo LIMIT 5,5 a získal bych 5 záznamů na konci, jenomže předem nevím kolik celkem záznamů bude a mám třeba dotaz

mysql_query("SELECT neco FROM neco ORDER BY datum LIMIT 0,5") - takže třeba ze 100 odpovídajících záznamů dostanu záznamy 0-5, ale potřebuji získat záznamy 95-100 jak na to? díky

Nevím jestli to pochopíte jak to myslím pro jistotu upřesním: Potřebuji aby ten příkaz LIMIT 0,5 bral tu nulu od nulté pozice, ale ne na začátku, nýbrž od konce (takže při 100 záznamech nebude LIMIT 0,5 startovat počítání na záznamu 0 a porkačovat 1..2..atd, ale bude startovat na záznamu 100 a bude odpočítávat těch 5 směrem dolu 99...98... atd případně 95..96.. to už je jedno, halvně ale aby to bylo od konce)

Doufám že se mi to nějako trochu podařilo vysvětlit :)

děkuji moc za rady
Senyx
Profil
zkusil bych otočit pořadí prvků výběru (ORDER BY datum DESC) potom vybrat pět prvních a potom případně otočit zpět
Mastodont
Profil
Nejdřív spustit SELECT COUNT(..) a pak použít vrácený počet záznamů ...
BetaCam
Profil
No nevim pánové a nebylo by jednoduší použít dotaz typu

SELECT neco FROM neco ORDER BY datum DESC LIMIT 5

pokud to má vracet pouze určitej počet řádků vždy od konce tak je to podle me nejjednoduší zpusob jak to udelat SELECT COUNT(..) mi prijde trochu překomplikované.
Mastodont
Profil
BetaCam

Jasně, ale pak to budou záznamy 100 až 95 - což Limitovi vyhovuje - ale kdybys chtěl záznamy 95 až 100, tak to takhle nejde.
BetaCam
Profil
Mastodont

Omlouvám se nevšiml sem si v původním postu autora té části věty případně 95..96.. proto sem nechapal proč navrhuješ složitější řešení pomocí COUNT atd.
Ssob
Profil
A co tak

SELECT a.neco FROM (SELECT neco FROM neco ORDER BY datum DESC LIMIT 5) a ORDER BY neco

?
Limit
Profil *
tak přes DESC to bohužel z určitých důvodů řešit nemůžu, count mě napadl ale přišlo mi to takové nešikovné, asi mi ale nic jiného nezvyde ... a nebo nešel by ototčit výpis přímo v mysql_fetch_array??
prostě jak si klasicky načtu dotaz do proměnné a pak ho vypisuju pomocí while() tak ty data v něm nějak otočit aby se vypisovali obráceně...?
Limit
Profil *
Jde mi konkrétně o tohle: mám v databázi uložené například záznamy
1
2
3
4
5

Použiju klasicky mysql dotaz s LIMIT 0,2 a pomocí while se mi vypíše
1
2

když použiju ten samý dotaz, ale z DESC vypíše se mi

5
4

já to ale potřebuju otočit tak aby se mi vypsalo
2
1
nightfish
Profil
prostě jak si klasicky načtu dotaz do proměnné a pak ho vypisuju pomocí while() tak ty data v něm nějak otočit aby se vypisovali obráceně...?
$vysledky = array();
while (...) {
$vysledky[] = mysql_fetch_array($vysledek);
}
$vysledky = array_reverse($vysledky);

a pak vypsat pomocí foreach...
akorát pro větší množství výsledků bude větší paměťová náročnost...
Kajman_
Profil *
Nebo to udělejte podle Senyxe

select * from (select * from tabulka order by datum desc limit 5) tmp order by datum
Limit
Profil *
Super! Funguje to!

Mohl by si mi ještě prosím vysvětlit jak to konkretně funguje? nějak nechápu ten další select v té závorce , místo názvu tabulky a to tmp čemu je?
díky
Kajman_
Profil *
http://dev.mysql.com/doc/refman/4.1/en/unnamed-views.html
Toto téma je uzamčeno. Odpověď nelze zaslat.

0