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 Puntos23890

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, 2017

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, 2017

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, 2017

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