Autor | Zpráva | ||
---|---|---|---|
Limit Profil * |
#1 · Zasláno: 25. 6. 2007, 04:28:01
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 |
#2 · Zasláno: 25. 6. 2007, 06:57:47
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 |
#3 · Zasláno: 25. 6. 2007, 07:35:11
Nejdřív spustit SELECT COUNT(..) a pak použít vrácený počet záznamů ...
|
||
BetaCam Profil |
#4 · Zasláno: 25. 6. 2007, 09:11:58 · Upravil/a: BetaCam
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 |
#5 · Zasláno: 25. 6. 2007, 10:32:01
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 |
#6 · Zasláno: 25. 6. 2007, 11:13:08
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 |
#7 · Zasláno: 25. 6. 2007, 11:31:21
A co tak
SELECT a.neco FROM (SELECT neco FROM neco ORDER BY datum DESC LIMIT 5) a ORDER BY neco ? |
||
Limit Profil * |
#8 · Zasláno: 25. 6. 2007, 11:50:16
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 * |
#9 · Zasláno: 25. 6. 2007, 12:10:58
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 |
#10 · Zasláno: 25. 6. 2007, 12:27:32
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 * |
#11 · Zasláno: 25. 6. 2007, 12:31:59
Nebo to udělejte podle Senyxe
select * from (select * from tabulka order by datum desc limit 5) tmp order by datum |
||
Limit Profil * |
#12 · Zasláno: 25. 6. 2007, 12:56:31
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 * |
#13 · Zasláno: 25. 6. 2007, 13:40:54
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0