Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brojanje zapisa koji je rezultat upita nad više tabela

[es] :: MySQL :: Brojanje zapisa koji je rezultat upita nad više tabela

[ Pregleda: 2008 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Brojanje zapisa koji je rezultat upita nad više tabela18.05.2009. u 20:23 - pre 181 meseci
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]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Brojanje zapisa koji je rezultat upita nad više tabela18.05.2009. u 23:16 - pre 181 meseci
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?
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: Brojanje zapisa koji je rezultat upita nad više tabela18.05.2009. u 23:55 - pre 181 meseci
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 !!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Brojanje zapisa koji je rezultat upita nad više tabela19.05.2009. u 10:34 - pre 181 meseci
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
 
Odgovor na temu

[es] :: MySQL :: Brojanje zapisa koji je rezultat upita nad više tabela

[ Pregleda: 2008 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.