2010-02-03 11 views
5

Tengo una base de datos con las siguientes dos tablas, USUARIOS, POSTS Estoy buscando una manera de obtener el recuento de la cantidad de mensajes que tiene un usuario.MySQL Encuentra la cantidad total de publicaciones por usuario

Users   Posts 
+----+------+ +----+---------+-----------+ 
| ID | Name | | ID | user_id | Name  | 
+----+------+ +----+---------+-----------+ 
| 1 | Bob | | 1 | 1  | Blargg... | 
+----+------+ +----+---------+-----------+ 
| 2 | Jim | | 2 | 1  | Blargg... | 
+----+------+ +----+---------+-----------+ 
| 3 | Jo | | 3 | 2  | Blargg... | 
+----+------+ +----+---------+-----------+ 

He intentado muchas variaciones del siguiente comando SQL sin ningún éxito. en lugar de mostrar el recuento de publicaciones para un solo usuario, muestra una sola fila con todas las publicaciones como recuento.

SELECT users.* , COUNT(Posts.user_id) 
FROM users 
LEFT JOIN Posts ON users.id = Posts.user_id 

Al final quiero algo como esto

+----+------+ 
| ID | Count| 
+----+------+ 
| 1 | 2 | 
+----+------+ 
| 2 | 1 | 
+----+------+ 

Respuesta

6

descubierto. huele a uno mismo en la cabeza

SELECT users.*, count(posts.user_id) 
FROM posts LEFT JOIN users ON users.id=posts.user_id 
GROUP BY posts.user_id 
1
select users.*, count(posts.user_id) 

from users, posts 
where users.user_id = posts.user_id 
group by posts.user_id 

Pero la mejor manera es demasiado agregar un campo a la tabla de usuarios y mantener la cantidad de mensajes hechos por cada uno de los usuarios, y puesto al día cada vez que se crea o se elimina un puesto . De lo contrario, reducirá la velocidad de su base de datos cuando crezca.

+1

Sin una unión lefft ... excluirá a todos los usuarios sin una publicación. –

Cuestiones relacionadas