[ Tudfa @ 18.05.2009. 20:23 ] @
Pozdrav !

Imam sledeći upit :
Code:
SELECT
t1.*,
t2.name,
IF(ROUND(AVG(t3.grade),2)IS NULL,0,ROUND(AVG(t3.grade),2)) AS grade,
COUNT(t3.jid) AS votes
FROM t1
INNER JOIN t2 ON t1.cat_id=t2.id
INNER JOIN t3 ON jokes.id=t3.joke_id
WHERE (t1.approved_by IS NOT NULL)
GROUP BY t1.id
HAVING grade >8
LIMIT 0,5

Hoću da pre ovoga izvršim jedan upit koji će izbrojati rezultate po datim kriterijumima i vratiti kao rezultat broj zapisa.
Ovo mi treba zbog paginacije, tj. neću da mi vrati sve zapise kao u ovom upitu gore,
nego mi treba da prvo izbrojim a onda prikažem samo prvih n.

Ja sam ovako rešio to, ali mi i dalje deluje da može bolje, pa ako može neki hint...

Code:
SELECT COUNT(*) AS br_zapisa FROM (SELECT
IF(ROUND(AVG(t3.grade),2)IS NULL,0,ROUND(AVG(t3.grade),2)) AS grade
FROM t1
INNER JOIN t2 ON t1.cat_id=t2.id
INNER JOIN t3 ON t1.id=t3.joke_id
WHERE (t1.approved_by IS NOT NULL)
GROUP BY t1.id
HAVING grade >8
)AS rezultat




[Ovu poruku je menjao Tudfa dana 18.05.2009. u 21:38 GMT+1]
[ bogdan.kecman @ 18.05.2009. 23:16 ] @
http://dev.mysql.com/doc/refman/5.1/en/select.html
http://dev.mysql.com/doc/refma...tions.html#function_found-rows

Citat:

SQL_CALC_FOUND_ROWS tells MySQL to calculate how many rows there would be in the result set, disregarding any LIMIT clause. The number of rows can then be retrieved with SELECT FOUND_ROWS().


Code:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();


jasno? ili da idem u detalje?
[ Tudfa @ 18.05.2009. 23:55 ] @
Sve više mi se svidja MySQL, kao i ovaj MySQL forum ... Probaću ovo ujutro kad ustanem, mislim da neće biti
potrebe za detaljima, ovo je ono što sam tražio. Hvala najlepše !!
[ bogdan.kecman @ 19.05.2009. 10:34 ] @
kada shvatis da je mysql 5.0/5.1 malo drugaciji od onoga sto je bio mysql 3.23 mnoge stvari dodju na mesto :) ... ne mislim licno ti, vec, generalno ljudi koji ga nisu koristili od tada .. (tada nije bilo nista ovih normalnih funkcija, stranih kljuceva, unija, subselect-a .. nisi mogao nista kompleksnije od obicnog upita da uradis) ... 5.1 je ozbiljan rdbms sa kompletnom funkcionalnoscu db servera ... naravno, fali mu stosta, i ima ponesto sto drugi nemaju ... ali vrlo koristan i upotrebljiv sistem...

pored same baze, obrati paznju da mysql ima odlicnu dokumentaciju ... :) koja u 80% slucajeva daje odgovor na postavljeno pitanje