indovinate un po'...ancora il mio forum! VVoVe:

Codice PHP:
SELECT t.id,t.oggetto,SUBSTRING(t.testo,1,100) AS ante_txt,t.userid,t.tdata,t.nvisite,t.chiuso,t.pin,t.poll,
COUNT(p.id) AS numposts,p.topicid,
u.nome,
pp.userid AS idultimouser,pp.pdata AS dataultima,
uu.nome AS ultimouser
FROM 
".$tblprefix."topics AS t
LEFT JOIN 
".$tblprefix."posts AS p ON p.topicid=t.id
LEFT JOIN 
".$tblprefix."users AS u ON t.userid=u.id
LEFT JOIN 
".$tblprefix."posts AS pp ON t.id=pp.topicid
LEFT JOIN 
".$tblprefix."users AS uu ON pp.userid=uu.id
WHERE t
.stanzaid='$id' GROUP BY t.id
ORDER BY t
.pin DESCpp.pdata DESCpp.id DESCt.tdata DESC 
Questa query, in caso ci sia un topic con 10 risposte, mi restituisce 100 come numero delle risposte. Il motivo l'ho capito, cioè che moltiplica il numero dei posts (numposts) per sè stesso, ma non so come risolvere.

Ho provato anche usando HAVING p.topicid=t.id ma non cambia nulla; raggruppando per p.id mi restituisce 10 copie dello stesso topic (però con il numero di risposte esatto!); usando INNER o RIGHT al posto di LEFT (anche invertendo l'ordine dei campi joinati) non cambia nulla...

Che dite, è meglio dedicare un campo nella tabella topics in cui memorizzare il numero di risposte (quindi una query in più ad ogni risposta)?? E in termini di prestazioni sarebbe meglio?

Tnx come al solito.


Ciaooooooo!!!!!!