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

Consulta que no consigo sacar...

Estas en el tema de Consulta que no consigo sacar... en el foro de Mysql en Foros del Web. Buenas gente, Llevo un buen rato intentando sacar una consulta y no doy con ella, a ver si alguien me podría echar un cable... Descripción ...
  #1 (permalink)  
Antiguo 24/08/2011, 17:08
 
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 19 años, 10 meses
Puntos: 1
Consulta que no consigo sacar...

Buenas gente,

Llevo un buen rato intentando sacar una consulta y no doy con ella, a ver si alguien me podría echar un cable...

Descripción de las 4 tablas
orders: pedidos realizados.
orders_products: productos que hay en un pedido que se haya realizado.
propiedades: posibles propiedades que puede o no tener un producto.
productos_propiedades: relación entre productos y propiedades, aquí se guardan las relaciones entre los productos y las propiedades.

CREATE TABLE IF NOT EXISTS `orders_id` (
`orders_id` int(11) NOT NULL,
`customers_id` int(11) NOT NULL,
`fecha_pedido` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`pagado` int(11) NOT NULL,
`entregado` int(11) NOT NULL,
PRIMARY KEY (`orders_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `orders_products` (
`orders_products_id` int(11) NOT NULL,
`orders_id` int(11) NOT NULL,
`products_id` int(11) NOT NULL,
`price` double NOT NULL,
PRIMARY KEY (`orders_products_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `productos_propiedades` (
`pp_id` int(11) NOT NULL,
`products_id` int(11) NOT NULL,
`propiedad_id` int(11) NOT NULL,
`propiedad_value` varchar(2000) NOT NULL,
PRIMARY KEY (`pp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `propiedades` (
`propiedad_id` int(11) NOT NULL,
`propiedad_key` varchar(45) NOT NULL,
`propiedad_descripcion` varchar(2000) NOT NULL,
PRIMARY KEY (`propiedad_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Y lo que quiero sacar son los 3 colores más comprados por los clientes durante los últimos 45 días...pero no doy con ello

Muchas gracias de antemano!!
  #2 (permalink)  
Antiguo 25/08/2011, 04:00
 
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: Consulta que no consigo sacar...

Buenas gente,

Por ahora lo que he conseguido es mostrar los tres colores que más se repiten con esta consulta:

SELECT count( * ) , pp.propiedad_value
FROM orders_products AS op
INNER JOIN productos_propiedades AS pp ON op.products_id = pp.products_id
GROUP BY pp.propiedad_value
ORDER BY count( * ) DESC
LIMIT 3

Pero cuando voy a la parte de que sea de los últimos 45 días es cuando la cosa se me lia y no doy con ello...a ver si alguien pudiera darme una pista, gracias!!
  #3 (permalink)  
Antiguo 25/08/2011, 04:58
 
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: Consulta que no consigo sacar...

sigo al lio...pero no termino de sacarlo, estoy probando algo asi:

SELECT count( * ) , pp.propiedad_value
FROM orders_products AS op
INNER JOIN productos_propiedades AS pp ON op.products_id = pp.products_id
INNER JOIN orders_id as oi ON oi.orders_id = op.orders_id
WHERE (STR_TO_DATE(oi.fecha_pedido,'%d-%m-%Y') BETWEEN DATE_SUB(CURDATE(), INTERVAL 45 DAY) AND NOW())
GROUP BY pp.propiedad_value
ORDER BY count( * ) DESC
LIMIT 3
  #4 (permalink)  
Antiguo 25/08/2011, 08:16
 
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: Consulta que no consigo sacar...

Buenos...pues parece que al final lo he sacado...esta es la sentencia:

SELECT count( * ) , pp.propiedad_value
FROM orders_products AS op
INNER JOIN productos_propiedades AS pp ON op.products_id = pp.products_id
INNER JOIN orders_id as oi ON oi.orders_id = op.orders_id
WHERE oi.fecha_pedido BETWEEN DATE_SUB(CURDATE(), INTERVAL 45 DAY) AND NOW()
GROUP BY pp.propiedad_value
ORDER BY count( * ) DESC
LIMIT 3

De todas formas si alguien ve algún fallo será vienbenido...un saludo

Etiquetas: tabla
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 05:53.