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

Consulta valor mínimo, teniendo en cuenta que otro campo sea único

Estas en el tema de Consulta valor mínimo, teniendo en cuenta que otro campo sea único en el foro de Mysql en Foros del Web. Actualmente me encuentro desarrollando un sistema, que guarda información de puntos distribuidores que son proveedores de tiendas, en el sistema tengo 3 tablas: "vendedores" (guarda ...
  #1 (permalink)  
Antiguo 12/04/2012, 16:04
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 1 mes
Puntos: 2
De acuerdo Consulta valor mínimo, teniendo en cuenta que otro campo sea único

Actualmente me encuentro desarrollando un sistema, que guarda información de puntos distribuidores que son proveedores de tiendas, en el sistema tengo 3 tablas: "vendedores" (guarda información de los vendedores que le venden a las tiendas, su llave primaria es id_vendedor), "tiendas" (guarda información de las tiendas que le compran a los vendedores, su llave primaria es id_tienda) y "tiendas_ventas" (guarda la información de las ventas que los vendedores le hacen a las tiendas, llaves foráneas son "id_tienda" y "id_vendedor", así mismo cuentan con los campos "mes" este guarda el mes de la venta y "valor" el cual guarda el precio de la venta). Tengo un reporte en el cual necesito (solo filtrando por mes) consultar un listado que traiga a los vendedores con: nombre, número total de tiendas a las que (el vendedor) les vendio en el mes y número de tiendas a las que (el vendedor) les vendio por primera vez en el mes (y a las que NUNCA!!!!!!!!! antes se les habia vendido):

SELECT vendedores.vendedor, (

SELECT COUNT( tiendas_ventas.id_tienda )
FROM tiendas_ventas
WHERE tiendas_ventas.id_participante = vendedores.id_participante
AND tiendas_ventas.mes = '2012-04-01'
) AS cantidad_total_tiendas_ventas, (
SELECT COUNT( DISTINCT tiendas_ventas.id_tienda )
FROM tiendas_ventas
WHERE tiendas_ventas.id_participante = vendedores.id_participante
AND tiendas_ventas.mes = (SELECT MIN( tiendas_ventas.mes ) FROM tiendas_ventas )
AND tiendas_ventas.mes = '2012-04-01'
) AS cantidad_tiendas_ventas_primera_vez
FROM vendedores

los nombres de los vendedores los trae sin problema, así mismo el número total de tiendas a las que (el vendedor) les vendio en el mes, más en el número de tiendas a las que (el vendedor) les vendio por primera vez en el mes (y a las que NUNCA!!!!!!!!! antes se les habia vendido), trae solo cero (y no deberia ser así), soy consiente del error de la consulta, por lo cual he intentado con lo siguiente:

SELECT COUNT( tiendas_ventas.id_tienda )
FROM tiendas_ventas
WHERE tiendas_ventas.id_participante = vendedores.id_participante
AND tiendas_ventas.mes = '2012-04-01'
) AS cantidad_total_tiendas_ventas, (
SELECT COUNT( DISTINCT tiendas_ventas.id_tienda )
FROM tiendas_ventas
WHERE tiendas_ventas.id_participante = vendedores.id_participante
AND tiendas_ventas.mes = (SELECT MIN( tiendas_ventas.mes ) FROM tiendas_ventas GROUP BY tiendas_ventas.id_tienda )
AND tiendas_ventas.mes = '2012-04-01'
) AS cantidad_tiendas_ventas_primera_vez
FROM vendedores

ante lo cual mysql me dice que hay más de un registro en una subconsulta, la lógica de por qué ocurren las inconsistencias en ambas consultas, la tengo clara, más aún así no logro hallar la solución para hacer funcionarla como necesito que suceda, por lo cual recurro a ustedes, por si alguien me puede ayudar.

Soy claro?

Quedo atento a sus comentarios.

Muchas gracias.

Etiquetas: select, sql, tabla, campos
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:00.