La mezcla de columnas GROUP (MIN (), MAX (), COUNT (), …) sin columnas GROUP es ilegal si no hay una cláusula GROUP BY

Estoy usando un viejo script php y tengo un error con esta consulta. Como no tengo experiencia con mysql, no pude solucionarlo.

"SELECT COUNT(p.postid) AS pid, p.*, t.* FROM ".TABLE_PREFIX."post AS p INNER JOIN ".TABLE_PREFIX."thread AS t ON (p.threadid = t.threadid) WHERE p.username='".$uname."'" 

el error es

La mezcla de columnas GROUP (MIN (), MAX (), COUNT (), …) sin columnas GROUP es ilegal si no hay una cláusula GROUP BY

Espero que alguien pueda ayudarme

Como dice el error, no puede SELECCIONAR una función de agregado, como COUNT, sin agrupar filas explícitamente (utilizando GROUP BY) o implícitamente (simplemente seleccionando el agregado). Para decirlo en términos menos técnicos, le está diciendo a la base de datos, “Busque todas las publicaciones con este nombre de usuario, y los hilos a los que pertenecen, y el número de publicaciones”, y la base de datos le está respondiendo, “la cantidad de publicaciones ¿en que?”.

Entonces deberás ser más específico. Si lo que realmente quieres es:

  • Si no le importan realmente todas las publicaciones individuales, y solo quiere los hilos y el número de publicaciones de este usuario por hilo, elimine la p.* De SELECT y agregue GROUP BY t.threadid hasta el final de la consulta.
  • Si desea la cantidad total de publicaciones, así como todas las publicaciones y subprocesos, simplemente cuente las filas de resultados.
  • Si desea la cantidad total de publicaciones de todos los usuarios en los hilos que está seleccionando, la consulta será mucho más compleja, ya que deberá volver a unirse a la post para obtener el recuento total de publicaciones.
  • Si realmente no desea el conteo en absoluto, elimínelo de la consulta. 🙂