Ergrow Posted October 11, 2017 Share Posted October 11, 2017 Hola! Por más que he buscado no he encontrado una consulta SQL que muestre todos los productos que ha comprado un cliente específico (filtrando por su ID de cliente) en un rango de fechas concreto. He llegado a esta consulta SQL pero me da error "El atributo "id_customer" no existe en la tabla "ps_order_detail" y no se si el resto esta correcto, además de que no he podido incluir todo lo que necesito. SELECT CONCAT_WS( ' ', g.firstname, g.lastname ) AS CLIENTE, d.product_name AS PRODUCTO, d.product_price AS PRECIO, d.product_quantity AS CANTIDAD FROM ps_order_detail o LEFT JOIN ps_customer c ON c.id_customer = o.id_customer LEFT JOIN ps_order_detail n ON n.id_order = o.id_order WHERE o.customer_id = 80; BETWEEN '2017-09-01' AND '2017-09-30' Seguro que es muy sencillo, pero no tengo idea de cómo hacerlo para que muestre correctamente los datos, así que os transmito lo que necesito en la consulta: - id del pedido (a ser posible ordenar por ID de pedido) - producto (nombre del producto, con sus atributos/combinaciones) - precio unitario que ha pagado (el precio que muestra en los detalles del pedido para ese cliente con impuestos incluidos) - cantidad (unidades compradas en ese pedido) - Total por producto (multiplicar el precio x cantidad) En un rango de fecha determinado. ¿Alguien me podría ofrecer su ayuda y escribir por aquí la consulta correcta? Gracias!! Link to comment Share on other sites More sharing options...
ventura Posted October 12, 2017 Share Posted October 12, 2017 De momento puedes empezar por algo asi SELECT CONCAT_WS( ' ', c.firstname, c.lastname ) AS CLIENTE, o.product_name AS PRODUCTO, o.product_price AS PRECIO, o.product_quantity AS CANTIDAD FROM ps_order_detail o LEFT JOIN ps_orders os ON os.id_order = o.id_order LEFT JOIN ps_customer c ON c.id_customer = os.id_customer WHERE os.id_customer = 1 AND os.date_add BETWEEN '2017-01-01' AND '2017-12-30' 1 Link to comment Share on other sites More sharing options...
Ergrow Posted October 13, 2017 Author Share Posted October 13, 2017 Muchas gracias ventura ¡Funciona al a perfección! Por último, una duda más si es posible: Necesito poder hacer una consulta donde muestre el último precio de coste de cada producto en existencias. El precio de coste es el que: - En el apartado Existencias > Gestión de Existencias, cuando damos a "Añadir existencias" nos aparece la celda rellenable "Precio unitario (sin IVA)" mi duda es ¿En qué tabla de la base de datos y con qué atributo se guarda este valor? Sé que Prestashop lo usa para calcular el valor total de existencias en un almacén, pero por más que he buscado, no encuentro dónde guarda "Precio unitario (sin IVA)" una vez que añadimos un producto a la gestión de existencias. ¿Alguién me podría ayudar? Gracias!!!! Link to comment Share on other sites More sharing options...
Ergrow Posted October 13, 2017 Author Share Posted October 13, 2017 ¿En qué tabla de la base de datos y con qué atributo se guarda este valor? Hola de nuevo! Ya he averiguado en que tabla está "Precio unitario (sin IVA)": Está en la tabla ps_stock_mvt y el atributo es: price_te Ahora solo me faltaría saber cómo crear una nueva columna con el valor de price_te de la tabla "ps_stock_mvt" correspondiente a cada fila de producto de la consulta que ventura tan amablemente escribió en su mensaje. SELECT CONCAT_WS( ' ', c.firstname, c.lastname ) AS CLIENTE, o.product_name AS PRODUCTO, o.product_price AS PRECIO, o.product_quantity AS CANTIDAD FROM ps_order_detail o LEFT JOIN ps_orders os ON os.id_order = o.id_order LEFT JOIN ps_customer c ON c.id_customer = os.id_customer WHERE os.id_customer = 1 AND os.date_add BETWEEN '2017-01-01' AND '2017-12-30' ¿Sabría alguien como incluir en esta consulta el price_te de la tabla ps_stock_mvt ? Gracias por adelantado! Link to comment Share on other sites More sharing options...
Ergrow Posted October 17, 2017 Author Share Posted October 17, 2017 Hola! He estado mirando y he avanzado en algo: SELECT o. `id_order` AS PEDIDO, n.`product_name` AS PRODUCTO, l.`price_te` AS COSTE FROM `ps_orders` o LEFT JOIN `ps_order_detail` n ON n.`id_order` = o.`id_order` LEFT JOIN `ps_stock` l ON n.`product_quantity`= l.`physical_quantity` WHERE 1 AND o.`date_add` >= '2017-09-01 0:0:0' AND o.`date_add` <= '2017-09-30 23:59:59' LIMIT 0 , 50 pero me salen los productos en filas repetidas y parece todo un caos,¿cómo podría unir estas tres tablas en una sola consulta de forma correcta? ¿qué estoy haciendo mal? ¿Alguien podría ayudarme? Gracias!! Link to comment Share on other sites More sharing options...
bergkamp23 Posted September 19, 2020 Share Posted September 19, 2020 hola, me gustaria hacer la consulta sql, pero en vez de por id de cliente que busque por referencia de producto, donde nos diga quien o nº de pedido lo ha comprado... un saludo Link to comment Share on other sites More sharing options...
bergkamp23 Posted September 19, 2020 Share Posted September 19, 2020 Me respondo a mi mismo, ya lo tengo... he añadido tambien aparezca numero de pedido, espero os ayude, saludos la consulta sql es: SELECT CONCAT_WS( ' ', c.firstname, c.lastname ) AS CLIENTE, o.product_name AS PRODUCTO, o.product_price AS PRECIO, o.product_quantity AS CANTIDAD,o.id_order AS PEDIDO FROM ps_order_detail o LEFT JOIN ps_orders os ON os.id_order = o.id_order LEFT JOIN ps_customer c ON c.id_customer = os.id_customer WHERE o.`product_id` = xxxx (añadir la id de vuestro producto) AND os.date_add BETWEEN '2017-01-01' AND '2022-12-30' Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now