SQL - Duda mySql (count + joins)

 
Vista:
sin imagen de perfil

Duda mySql (count + joins)

Publicado por nifff (3 intervenciones) el 03/12/2015 11:21:28
El problema es el siguiente: tengo 3 tablas ususarios, click_anuncios, y paginas visitadas. La lógica es la siguiente

Usuarios: listado de todos los usuarios.
Click anuncios, guarda un registro, por cada click que haya hecho un usuario en un anuncio, guardando la fecha, el id de usuario y el id del anuncio.
Páginas visitadas: identico al de arriba pero cada vez que entra en una pagina nueva.

Quiero una consulta que me diga de cada usuario el nº total de clicks que ha hecho en los banners, y el lo mismo para las páginas. La consulta que he preparado es esta, que no funciona correctamente.

Select users.nombre, apellidos, email , count(ep.user_id) as paginas_visitadas, count(eb.user_id) as banners_clickados
from users
left join estadisticas_pagina ep on ep.user_id = users.id
left join estadisticas_banner eb on eb.user_id = users.id
group by nombre, email, apellidos.

Me muestra siempre el mismo resultado de banners clickado y paginas visitadas, entiendo por que lo hace pero no se como resolverlo.


Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Duda mySql (count + joins)

Publicado por Rafael (111 intervenciones) el 03/12/2015 12:40:27
Claro por que cuentas el numero de USER_ID...

Lo suyo seria contar los ID de Paginas y Banners

Ejemplo
1
2
3
4
5
6
7
Select users.nombre, apellidos, email ,
count(ep.page_id) as paginas_visitadas,
count(eb.banner_id) as banners_clickados
from users
left join estadisticas_pagina ep on ep.user_id = users.id
left join estadisticas_banner eb on eb.user_id = users.id
group by nombre, email, apellidos.

Pero esto realmente te diria el numero de CLICKS realizados en Banners y el numero de VISITAS a paginas
Es decir que que si visitas una pagina dos veces te cuenta 2 y no una ya que es la misma pagina... para obtener esto ultimo...
1
2
3
4
5
6
7
Select users.nombre, apellidos, email ,
count(DISTINCT ep.page_id) as paginas_visitadas,
count(DISTINCT eb.banner_id) as banners_clickados
from users
left join estadisticas_pagina ep on ep.user_id = users.id
left join estadisticas_banner eb on eb.user_id = users.id
group by nombre, email, apellidos.

Vaya los nombres de los ID seguro son diferentes pero como no los mencionas los pongo asi...

Saludos

Pd. Si esto te sirve a ti a mi me sirve un +1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Duda mySql (count + joins)

Publicado por nifff (2 intervenciones) el 03/12/2015 12:56:15
Mil gracias, esto era!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar