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.