Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/03/2014, 07:24
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Utilizar de forma correcta COUNT()

Tengo esta consulta

Código SQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post FROM posts P
  2.                                 INNER JOIN
  3.                                         subcategories S
  4.                                 ON
  5.                                         S.idsubcategorie=P.idsubcategorie
  6.                                 WHERE
  7.                                         S.subcategorie=var

El problema es que de esta manera solo me devuelve un registro, intuyo que es por realizar COUNT() sin GROUP BY.

Al añadir GROUP BY queda así

Código SQL:
Ver original
  1. SELECT *, COUNT(P.idpost) count_post FROM posts P
  2.                                 INNER JOIN
  3.                                         subcategories S
  4.                                 ON
  5.                                         S.idsubcategorie=P.idsubcategorie
  6.                                 WHERE
  7.                                         S.subcategorie=var
  8.                                 GROUP BY P.idpost

El problema es que de esta forma "desglosa" count y va atribuyendo en cada referencia count_post el valor 1 por cada post. (si quisiera conocer el total tendría que ir sumando del lado del CGI, por lo que COUNT ya no serviría de nada, directamente podría sumar con el CGI, y eso es lo que quiero evitar).

Entonces si añado en la consulta WITH ROLLLUP en la cláusula WHERE, justo después del GROUP BY, el problema está en que el último array lo repite para poder hacer así la suma, además de añadir en cada referencia el valor 1 al final hace la suma total, pero repite el array.

La pregunta es

¿Hay alguna manera de que en vez de repetir el último array con los datos del último post y la suma, este último array solo tenga los datos de la suma?

Para tener un array limpio, ordenado y a la hora de recorrerlo para imprimir, etc. no duplicar registros, etc.
__________________
Ayúdame a hacerlo por mi mismo.