Forum » Programiranje » SQL, pagination
SQL, pagination
BRBR ::
iz MYSQL baze potegnem nekaj v smislu:
To dela hitro. Za paginacijo pa rabim še vedet kolk recordov bi bilo brez LIMIT.
Vse skupaj sem dal v v eno bazno poceduro, ki vrne recordset od 0,20, in en return value, ki je zadevni count in izkaže se da je zelo počasno (zdaj, ko se je zapisov nabralo), ker moram pač:
Kakšna pametna misel ?
Select ... group by ... having ... Limit 0,20
To dela hitro. Za paginacijo pa rabim še vedet kolk recordov bi bilo brez LIMIT.
Vse skupaj sem dal v v eno bazno poceduro, ki vrne recordset od 0,20, in en return value, ki je zadevni count in izkaže se da je zelo počasno (zdaj, ko se je zapisov nabralo), ker moram pač:
select count(*) from Select ... group by ... having ...
Kakšna pametna misel ?
- spremenil: BRBR ()
techfreak :) ::
SELECT SQL_CALC_FOUND_ROWS ime, priimek FROM osebe LIMIT 0,10;
Potem pa za pridobitev števila vrstic brez limit:
SELECT FOUND_ROWS();
BRBR ::
Za tole pa nisem vedel (-:
v mysql query browser:
1. v prvi zavihek, moj sql s SQL_CALC_FOUND_ROWS z LIMIT, in mi vrne 20 recordov, tako kot treba
2. v drugi zavihek SELECT FOUND_ROWS();, in mi vrne 1
EDIT:Malo sem bral help, zgleda da bi moral to spravit v eno globalno variablo:
Ni mi čist jasno. Med 1 in 2 , zgoraj, po bazi ne delam nič.
?
v mysql query browser:
1. v prvi zavihek, moj sql s SQL_CALC_FOUND_ROWS z LIMIT, in mi vrne 20 recordov, tako kot treba
2. v drugi zavihek SELECT FOUND_ROWS();, in mi vrne 1
EDIT:Malo sem bral help, zgleda da bi moral to spravit v eno globalno variablo:
The row count available through FOUND_ROWS() is transient and not intended to be available past the statement following the SELECT SQL_CALC_FOUND_ROWS statement. If you need to refer to the value later, save it:
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM ... ;
mysql> SET @rows = FOUND_ROWS();
Ni mi čist jasno. Med 1 in 2 , zgoraj, po bazi ne delam nič.
?
Zgodovina sprememb…
- spremenil: BRBR ()
techfreak :) ::
Verjetno uporabi drugo povezavo?
Zakaj pa v istem zavihtku ne napišeš npr.:
Zakaj pa v istem zavihtku ne napišeš npr.:
SELECT SQL_CALC_FOUND_ROWS * FROM tabela LIMIT 10; SELECT FOUND_ROWS();
BRBR ::
nč ne pomaga, SELECT FOUND_ROWS(); zmeraj vrne 1,
kajpak ima c_sql znotraj SQL_CALC_FOUND_ROWS
pa tud če ne bi imel bi moral pa vsaj vrnit 20.
EDIT:tkole pa npr dela, čudno res ...
kajpak ima c_sql znotraj SQL_CALC_FOUND_ROWS
pa tud če ne bi imel bi moral pa vsaj vrnit 20.
DELIMITER $$ DROP PROCEDURE IF EXISTS `getOnePageOfDataNew` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `getOnePageOfDataNew`(OUT i_result INT, IN c_sql text, IN c_limit VARCHAR(60) ) BEGIN DECLARE tmpInt INT; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN set i_result = -1; END; Set @i_count = 0; SET @s = CONCAT(c_sql," ",c_limit); prepare stmt from @s; execute stmt; DEALLOCATE PREPARE stmt; SELECT FOUND_ROWS() into @i_count; set i_result = @i_count; END $$ DELIMITER ;
EDIT:tkole pa npr dela, čudno res ...
Select SQL_CALC_FOUND_ROWS id_galery
FROM galery_1
LIMIT 0,18
union
SELECT FOUND_ROWS()
Never underestimate the power of idiots in large groups.
Zgodovina sprememb…
- spremenil: BRBR ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8369 (5048) | BivšiUser2 |
» | MySQL procentiOddelek: Programiranje | 1159 (825) | Malik12 |
» | c# - mssql kombinacija / problem pri zapisu row-a v bazoOddelek: Programiranje | 1601 (1410) | darkolord |
» | [Visual C#] TableAdapterOddelek: Programiranje | 1134 (1010) | detroit |
» | Malce zahtevnejši SQL stavek včasih narobe SELECT-aOddelek: Izdelava spletišč | 2143 (1812) | Brilko |