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

Consulta a dos tablas

Estas en el tema de Consulta a dos tablas en el foro de Bases de Datos General en Foros del Web. Hola, quiero hacer una consulta a mysql intentando buscar información de dos tablas: comerciales ( id int(11) NOT NULL auto_increment, nombre varchar(255) default NULL, ciudad ...
  #1 (permalink)  
Antiguo 08/06/2006, 09:37
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 18 años, 7 meses
Puntos: 0
Consulta a dos tablas

Hola, quiero hacer una consulta a mysql intentando buscar información de dos tablas:

comerciales (
id int(11) NOT NULL auto_increment,
nombre varchar(255) default NULL,
ciudad varchar(255) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

ventas (
id int(11) NOT NULL auto_increment,
comercial varchar(10) default NULL,
año varchar(5) default NULL,
mes varchar(5) default NULL,
dia varchar(5) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

El problema lo tengo en que quiero hacerlo todo con una consulta y debería obtener los siguientes datos:

comerciales.nombre, comerciales.ciudad y despues las ventas de cada comercial por meses durante el año acual, decir las ventas realizadas en el mes 1, 2, 3,... del año 2006 por ejemplo.

¿Se puede hacer todo eso con una sola consulta?, es que de momento lo que hago es una consulta que busca los comerciales, y cuando los encuentra, empieza a hacer consultas por meses por lo tanto hago 12 consultas por cada comercial y por el momento la lista de comerciales es pequeña pero cuando crezca...

Un saludo
  #2 (permalink)  
Antiguo 08/06/2006, 11:22
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 18 años, 7 meses
Puntos: 0
Me parece que lo que busco es algo parecido a esto:

Código:
SELECT 
comerciales.nombre, comerciales.id,
COUNT(ventas.año) AS ventasA,
COUNT(ventas.mes = '1') AS ventasM1,
COUNT(ventas.mes = '2') AS ventasM2,
COUNT(ventas.mes = '3') AS ventasM3,
COUNT(ventas.mes = '4') AS ventasM4,
COUNT(ventas.mes = '5') AS ventasM5,
COUNT(ventas.mes = '6') AS ventasM6,
COUNT(ventas.mes = '7') AS ventasM7,
COUNT(ventas.mes = '8') AS ventasM8,
COUNT(ventas.mes = '9') AS ventasM9,
COUNT(ventas.mes = '10') AS ventasM10,
COUNT(ventas.mes = '11') AS ventasM11,
COUNT(ventas.mes = '12') AS ventasM12
FROM 
comerciales, ventas
WHERE
comerciales.id = ventas.comercial
GROUP BY comerciales.id LIMIT 0, 30
Lo que pasa que no me funciona bien, ya que solo hay una venta en el mes actual y las demás están a 0, y me dice el query que todos los meses tienen una venta.

¿alguna idea?
  #3 (permalink)  
Antiguo 08/06/2006, 11:30
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola Abite, una consulta:
Con que campo estan relacionados comerciales y ventas, con id?, en la consulta que haces, estas relacionando comerciales.id con ventas.comercial, y son tipos de datos diferentes además de tener distinto tamaño.
Si solo quieres saber cantidades por mes:

SELECT
comerciales.nombre, comerciales.id,ventas.año venta_anual,
ventas.mes,count(*)
from comerciales, ventas
where (campos equivalentes entre ambas tablas)
group by comerciales.nombre, comerciales.id,ventas.año venta_anual,
ventas.mes

No se si quieras eso, saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #4 (permalink)  
Antiguo 10/06/2006, 08:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 18 años, 7 meses
Puntos: 0
Los campos que relaciono son:
comerciales.id = ventas.comercial

El problema con tu consulta es que necesito saber las ventas en cada mes, y la consulta debe devolver el valor para cada mes por eso intentaba hacer algo asi:

COUNT(ventas.mes = '1') AS ventasM1,
COUNT(ventas.mes = '2') AS ventasM2,...

para intentar asignar a cada mes la cantidad total de ventas.
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 17:45.