entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Juntar COUNT con INNER JOIN Mysql

Buenas! Resulta que tengo dos tablas una de los usuarios y otra de los comentarios de los usuarios. Lo que necesito es contar la cantidad de comentarios que ha comentado un usuario

Ejemplo de la base de datos:


     Usuarios                    Comentarios
|------|-------|        |------|--------|------------|
|   id |Nombre |        |   id |usuario | comentario |
|------|-------|        |------|--------|------------|
|   1  |Jorge  |        |    1 | jorge  | Primero    |
|------|-------|        |------|--------|------------|
|   2  |Luis   |        |    2 | Jorge  | Segundo    |
|------|-------|        |------|--------|------------|
                        |    3 | Luis   | Tercero    |
                        |------|--------|------------|

En este caso Jorge tiene 2 comentarios y Luis 1. Es posible contar la cantidad de comentarios comentados por un usuarios con Count e Inner join de Mysql?

1 Respuesta

2votos

magarzon Puntos22090

Supongo que el campo usuario es una foreign key hacia Usuarios y que en realidad sus valores no son jorge y Luis si no 1 y 2.

Suponiendo esto (y si no, cámbialo), lo que buscas es esto:

SELECT Usuarios.id, Usuarios.Nombre, count(c.id) as ncomentarios FROM Comentarios c INNER JOIN Usuarios u on u.id=c.usuario GROUP BY c.usuario;

jorge98 comentado Nov 2

Disculpa esta mal mi ejemplo, lo que necesito lograr es contar la cantidad de comentarios de todos los posts publicado por un usuario seria algo asi..


      posts             
|------|-------|       
|   id |id_user|
|------|-------|  
|   1  |   2   |  
|------|-------|  
|   2  |   2   |  
|------|-------|        

        Comentarios
|------|--------|------------|
|   id | id_post| comentario |
|------|--------|------------|
|   1  |    1   | comentario1|
|------|--------|------------|
|   2  |    1   | comentario2|
|------|--------|------------|
|   3  |    2   | comentario3|
|------|--------|------------|

En este caso quiero saber cuantos comentarios tiene el usuario "2".

El usuario "2" tiene 2 comentarios en su primer post y 1 comentario en el segundo post, en total el usuario "2" tiene 3 comentarios en todos sus posts.

Como puedo sacar esta cuenta con Count mysql?

magarzon comentado Nov 2

La solución es similar a la que te di antes, añadiendo el JOIN sobre la tabla posts y un where si quieres los de un usuario específico (en este caso no haría falta el group by)

SELECT u.id, u.nombre, count(c.id) as ncomentarios FROM comentarios c INNER JOIN posts p ON p.id = c.id_post INNER JOIN usuarios u ON u.id = p.id_user WHERE u.id = 2;

jorge98 comentado Nov 3

Perfecto. Gracias por ayudarme!

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta