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

Como se puede hacer esta consulta??

Estas en el tema de Como se puede hacer esta consulta?? en el foro de Mysql en Foros del Web. Que tal a todos... Antes que nada mi tabla esta diseñada asi: CREATE TABLE venta_productos ( vep_id int(11) NOT NULL AUTO_INCREMENT, vep_ven_id int(11) DEFAULT NULL, ...
  #1 (permalink)  
Antiguo 28/10/2010, 06:30
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta Como se puede hacer esta consulta??

Que tal a todos...

Antes que nada mi tabla esta diseñada asi:

CREATE TABLE venta_productos (
vep_id int(11) NOT NULL AUTO_INCREMENT,
vep_ven_id int(11) DEFAULT NULL,
vep_pro_id int(11) DEFAULT NULL,
vep_cant bigint(20) NOT NULL DEFAULT '0',
vep_monto decimal(10,2) NOT NULL DEFAULT '0.00',
PRIMARY KEY (vep_id)
);

La cual esta referenciada a otro tabla principal de ventas donde guardo los datos del cliente y cosas por el estilo pero el problema que tengo es en esta tabla.

Lo que quiero hacer es mostrar los productos que se han vendido dependiendo la mayor cantidad de veces que se hayan vendido por cliente. Esto para generar una lista de productos que compra con mas frecuencia el cliente.

Por ejemplo a un cliente se le han hecho 2 ventas, en la primero se le vendio el "Producto 1", "Producto 2" y "Producto 3" y en la segunda venta se le vendio solo el "Producto 2", entonces lo que quiero es una consulta en la cual me muestre que el "Producto 1" se ha vendido 2 veces y los demas 1 vez.

Si alguien puede ayudarme pues de ante mano muchas gracias, porque yo ya intente todo y pues estoy pensando en hacer una tabla extra donde me vaya almacenando la cantidad de veces que haya comprado un "Producto X" el cliente jejejeje, pero no me quiero quedar con las ganas de ver si se puede.

El campo de vep_ven_id es la foreing key para la tabla de ventas.

Última edición por decor; 28/10/2010 a las 06:57
  #2 (permalink)  
Antiguo 28/10/2010, 09:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Como se puede hacer esta consulta??

Buenos días decor, creo que te faltó mencionar cuál es la estructura de tu tabla ventas, pues con los datos de tu tabla venta_productos sola no podemos determinar qué producto se le vendió a qué cliente. Para efectos del ejemplo que te quiero mostrar voy a suponer que tu tabla ventas tiene más o menos la siguiente información

Código:
vep_ven_id|vep_nombre_cliente
-------------------------------------------
1|Cliente 1
2|Cliente 1
3|Cliente 2
Esto quiere decir que la venta 1 y 2 fueron para el mismo cliente (Cliente 1) y la venta 3 fue para el cliente 2.

Ahora bien, voy a suponer que tu tabla venta_productos tiene más o menos la siguiente información:

Código:
vep_id|vep_ven_id|vep_pro_id|vep_cant|vep_monto
------------------------------------------------------------------------
1|1|1|11|100.00
2|1|2|12|200.00
3|1|3|19|300.00
4|2|2|7|200.00
5|3|1|4|123.00
Esta tabla traducida sería así, en la venta "1" se vendieron los productos "1,2 y 3". en la venta "2" se vendió el "producto 2" y en la venta "3" se vendió el "producto 1"

Según lo que entendí que quieres obtener puede hacer esto:

Código MySQL:
Ver original
  1. select v.vep_nombre_cliente, vp.vep_pro_id, count(*) as total
  2. from venta_productos vp inner join ventas v on v.vep_ven_id = vp.vep_ven_id
  3. group by v.vep_nombre_cliente, vp.vep_pro_id

Esta consulta te regresaría lo siguiente:

vep_nombre_cliente|vep_pro_id|total
--------------------------------------------------
Cliente 1|2|2
Cliente 1|1|1
Cliente 1|3|1
Cliente 2|1|1

Esto quiere decir que:

Al cliente "1", el producto "2" se le vendió 2 veces
Al cliente "1", el producto "1" se le vendió 1 vez
Al cliente "1", el producto "3" se le vendió 1 vez
Al cliente "2", el producto "1" se le vendió 1 vez

Espero que esto sea lo que necesites.

Saludos.
Leo.
  #3 (permalink)  
Antiguo 28/10/2010, 10:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Como se puede hacer esta consulta??

Hey Leo gracias por tu respuesta...

De hecho ya lo solucione me costo mucho pero ya quedo.

Este es el Query que use cabe mencionar que necesitaba mostrar algunos productos y no todos por ejemplo lo que hice fue sacar el total de ventas del cliente y con esa cantidad dividirla en 2 para que me muestre los productos que al menos esten en ese rango de ventas. Si tiene 4 ventas pues muestra los productos que aparezcan al menos en 2 ventas

Código MySQL:
Ver original
  1. SELECT DISTINCT pro_id, pro_name
  2. FROM venta_productos
  3. INNER JOIN productos ON pro_id = vep_pro_id
  4. GROUP BY vep_pro_id
  5. HAVING COUNT( vep_ven_id ) >= (
  6.     SELECT FLOOR( COUNT( * ) /2 )
  7.     FROM ventas
  8.     WHERE ven_cli_id = 1
  9.     AND ven_vet_id =1

El primer Query me trae el nombre del producto y su id dependiendo la venta del cliente y el Query Anidado me trae la cantidad de ventas con la que debe de coinsidir al menos el o los productos.

Bueno como quiera muchas gracias...

Etiquetas: Ninguno
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 23:01.