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 Puntos30650

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;

2votos

jorge98 comentado

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?

2votos

magarzon comentado

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;

1voto

jorge98 comentado

Perfecto. Gracias por ayudarme!

0voto

CRIZPRZ comentado

amigo tengo una tabla parecida pero tomando en cuenta este ejemplo como seria para que si por ejemplo un usuario no tiene ningun comentariio lo muestre con 0 comentarios

0voto

Peter comentado

@CRIZPRZ por favor abre una pregunta nueva.

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

Otras Preguntas y Respuestas


...

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

Conecta