Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Relacion de tablas

Estas en el tema de Relacion de tablas en el foro de Mysql en Foros del Web. Buenas gente quiero ver si me pueden dar una mano con una consulta mysql Lo que necesito hacer es contar el total de registros por ...
  #1 (permalink)  
Antiguo 13/04/2014, 12:14
 
Fecha de Ingreso: septiembre-2012
Mensajes: 25
Antigüedad: 12 años, 1 mes
Puntos: 0
Relacion de tablas

Buenas gente quiero ver si me pueden dar una mano con una consulta mysql
Lo que necesito hacer es contar el total de registros por dia y por categoria.

Mi tabla es asi

Tabla articulos
id
fecha
categoria

Tabla categorias
id
nombre

Mi consulta actual es la siguiente:



Código MySQL:
Ver original
  1. SELECT COUNT( a.id ) AS total_x_dia, a.categoria, a.fecha
  2. FROM articulos AS a
  3. LEFT JOIN categorias AS c
  4. ON a.categoria = c.id
  5. WHERE MONTH( a.fecha ) =04
  6. AND YEAR( a.fecha ) =2014
  7. GROUP BY a.categoria

El problema de esta consulta es que me trae los registros bien pero me duplica el dia es decir que si hoy agrege 2 articulos con distinta categoria me salen 2 resultados con el dia 13-04-2014.


Resultado:
  #2 (permalink)  
Antiguo 14/04/2014, 00:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Relacion de tablas

Cita:
si hoy agrege 2 articulos con distinta categoria me salen 2 resultados con el dia 13-04-2014
Eso es normal no? Si quieres

Cita:
el total de registros por dia y por categoria
Tambien se duplicaran las categorias si agregas articulos de la misma categoria pero en dias distintos.

Código MySQL:
Ver original
  1. SELECT COUNT( a.id ) AS total_x_dia,
  2.              c.nombre NomCategoria,
  3.              a.fecha
  4. FROM articulos AS a
  5.      LEFT JOIN categorias AS c
  6.          ON a.categoria = c.id
  7. WHERE MONTH( a.fecha ) =04
  8. AND YEAR( a.fecha ) =2014
  9. GROUP BY a.fecha,a.categoria

Si categoria de la tabla articulos es "not null" luego podrias usar INNER JOIN en lugar de LEFT...

Segun la tabla de ejemplo que muestras, has agregado 2 articulos de la categoria 1 el dia 13 y ese seria el total por dia y categoria y 2 de la categoria 2 y ese seria el total de esa categoria del dia 13.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, registro, relacion, select, sql, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:33.