djmortis Posted August 28, 2014 Share Posted August 28, 2014 Buenas, tengo hecha desde prestashop 1.6 una consulta en el gestor sql de parametros avanzados, en el mismo me saca la id de la referencia, la id del cliente, nombre, apellidos, email, móvil, nombre del producto, cantidad, forma de pago, si esta pagado, fecha de pago, fecha de pedido, estado y entrega. Este listado lo necesito para tener una referencia de los pedidos. El problema viene a que si en un pedido me compran 3 manzanas, 2 platanos y 4 naranjas, en el nombre del producto, y cantidad solo me sale lo del primer producto comprado, vamos, manzas y 3 y necesito que me saque todos los datos de la compra en ese listado. Os dejo el código que tengo en el gestor SQL a ver si me podéis ayudar. Gracias. SELECT d.id_order AS ID, d.reference AS Referencia, g.id_customer AS IDCliente, g.firstname AS Nombre, g.lastname AS Apellidos, g.email AS Email, w.phone_mobile AS Telefono, n.`product_name` AS Libro, n.`product_quantity` AS Cantidad, o.payment AS Forma_pago, o.valid AS Pagado, d.invoice_date AS FechaPago, o.date_add AS FechaPedido, b.name AS Estado, k.name AS Entrega FROM ps_orders d LEFT JOIN ps_orders o ON ( d.id_order = o.id_order ) LEFT JOIN ps_customer g ON ( o.id_customer = g.id_customer ) LEFT JOIN `ps_order_detail` n ON n.`id_order` = o.`id_order` LEFT JOIN ps_order_history h ON ( h.id_order = o.id_order ) LEFT JOIN `ps_carrier` k ON (k.id_carrier = o.id_carrier) LEFT JOIN `ps_address` w ON (w.id_customer = o.id_customer) LEFT JOIN `ps_order_state_lang` b ON (b.id_order_state = o.current_state) WHERE o.date_upd BETWEEN '2014-01-01' AND '2014-12-31' GROUP BY d.id_order LIMIT 0 , 300000 Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 (edited) Si le quito el GROUP BY d.id_order si que salen, pero salen duplicados y es un follón. Por ejemplo... 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina 145 201400145 113 prueba varios libros [email protected] 666666666 Electrotecnia 3 Transferencia bancaria 0 0000-00-00 00:00:00 28/08/2014 11:18 Productos fuera de línea Postal 48/72 Oficina Edited August 28, 2014 by djmortis (see edit history) Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 ¿Como lo haría statictic?, si no es mucho pedir, :/ Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 He probando añadiendo al final WHERE o.id_lang = 1 y WHERE g.id_lang = 1 y nada, siguen apareciendo muchísimos repetidos. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 No te entiendo, a que te refieres? Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 ¿Te refieres así? SELECT d.id_order AS ID, d.reference AS Referencia, g.id_customer AS IDCliente, g.firstname AS Nombre, g.lastname AS Apellidos, g.email AS Email, w.phone_mobile AS Telefono, n.`product_name` AS Libro, n.`product_quantity` AS Cantidad, o.payment AS Forma_pago, o.valid AS Pagado, d.invoice_date AS FechaPago, o.date_add AS FechaPedido, b.name AS Estado, k.name AS Entrega FROM ps_orders d LEFT JOIN ps_orders o ON ( d.id_order = o.id_order ) LEFT JOIN ps_customer g ON ( o.id_customer = g.id_customer ) LEFT JOIN `ps_order_detail` n ON n.`id_order` = o.`id_order` LEFT JOIN ps_order_history h ON ( h.id_order = o.id_order ) LEFT JOIN `ps_carrier` k ON (k.id_carrier = o.id_carrier) LEFT JOIN `ps_address` w ON (w.id_customer = o.id_customer) LEFT JOIN `ps_order_state_lang` b ON (b.id_order_state = o.current_state) WHERE d.`id_lang` = '.(int)$this->context->language->id.' Así no me funciona, :/ Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Nada, me da un csv vacio. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Ninguno, me acepta el código pero cuando lo bajo es un csv de 0 bytes. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Me da El atributo "id_order_state" no existe en la tabla "`ps_orders`". Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Nada... así me devuelve resultados, pero los agrupa por referencia, por lo que volvemos al error del principio, que no muestra todos los productos de un pedido. Además, de esta forma, hay pedidos que no me salen, :/ Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 De todas formas, por si sirve de ayuda, sólo tengo el español instalado y habilitado. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 (edited) ¿En vez de por el lenguaje puede que los este repitiendo por las categórias?, algunos los tengo puestos en varias categorías, :/ Por ejemplo, algunos artículos están en categoría inicio y en otra. después no se duplicán todos igual, unos se duplican 12 veces, otros 10, otros 4, otros ninguna :/ Edited August 28, 2014 by djmortis (see edit history) Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 (edited) De esa forma no me muestra el último pedido, :/ Como anotación es el único pedido con varios productos. Edited August 28, 2014 by djmortis (see edit history) Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Vale, era por la fecha, :/ De todas formas, con tu último ejemplo del pedido, en este caso 145 que tiene varios productos, solo me muestra 1 de los productos comprados. Vamos, el pedido 145 ha comprado 4 manzanas, 4 peras y 3 limones, en el listado solo me muestra que ha comprado 4 manzanas. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Al poner un group lo que hace es agrupar todos en una linea, de ahi que los junte todos, habría que buscar que campo se puede coger para que solo se agrupen los que son diferentes. No se si me explico, :/ Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 O bien que campo es el que se esta duplicando X veces, que no es ninguno de los que aparece en el listado y agruparlos por ese campo, pero ni idea, no hay forma de sacarlo. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Pero eso se puede hacer desde el gestor sql o habría que hacerlo de otra forma¿ Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Gracias Statictic, vamos,mi idea es sacar un listado para gestionar los pedidos y tener en un solo listado los pedidos que tengo, que productos tiene cada pedido, cantidad, etc, etc... Es raro que no se pueda sacar una forma facil, creo que es algo necesario para gestionar una tienda con unas ventas altas. :/ Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Hombre, esta el modo cutre, que es sacándolo con duplicados y en excel eliminar los duplicados. Pero vamos, no se como Prestashop no lleva algo para sacar este tipo de listados más facilmente, ya que para hacer listados necesarios para cualquier cosa, por ejemplo, enviar las etiquetas de envío a almacén con el listado correspondiente, para aligerar los envíos,o para ver de un vistazo todos los pedidos por productos, precios, cantidades... en vez de uno en uno que se pierde mucho tiempo. Raro cuanto menos. Pero bueno, que mil gracias por tu ayuda, creía que estaba yo ofuscado y no me salía, pero veo que es más complejo de lo que yo creía. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 1.6 Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Statictic, menudo currazo, mil gracias. Una cosa... sería más fácil hacerlo en un php haciendo la consulta directamente a la base? A fin de cuentas me da igual que se haga de prestashop o fuera de el. Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Mira Statictic aquí salen bien, a ver si soy capaz de implementarlo en el gestor sql con los datos que me hacen falta a mi... SELECT d.id_order, os.name AS tila, d.product_name, d.product_reference, d.product_price, d.product_quantity, o.payment, o.date_upd, CONCAT_WS(' ', g.lastname, g.firstname) AS asiakas, g.id_customer AS asiakasID, CONCAT_WS(' ', ad.address1, ad.address2, 'Kaupunki:', ad.postcode, ad.city, ad.other, 'Puhelin: ', ad.phone, 'Kännykkä: ', ad.phone_mobile) AS toimitusosoite, CONCAT_WS(' ', ai.address1, ai.address2,'Kaupunki:', ai.postcode, ai.city, ai.other, 'Puhelin: ', ai.phone, 'Kännykkä: ', ai.phone_mobile) AS laskutusosoite, gl.name AS group_name, s.quantity AS quantity_in_stock, g.email FROM ps_order_detail d LEFT JOIN ps_orders o ON (d.id_order = o.id_order) LEFT JOIN ps_address ad ON (o.id_address_delivery = ad.id_address) LEFT JOIN ps_address ai ON (o.id_address_invoice = ai.id_address) LEFT JOIN ps_stock_available s ON (d.product_id = s.id_product) LEFT JOIN ps_customer g ON (o.id_customer = g.id_customer) LEFT JOIN ps_group_lang gl ON (g.id_default_group = gl.id_group) AND gl.name LIKE 'piiri%' LEFT JOIN ps_order_state_lang os ON (o.current_state = os.id_order_state) WHERE os.id_lang = 1 Link to comment Share on other sites More sharing options...
djmortis Posted August 28, 2014 Author Share Posted August 28, 2014 Yo creo que tambien lo dejo por hoy. De nuevo mil gracias. Link to comment Share on other sites More sharing options...
djmortis Posted August 29, 2014 Author Share Posted August 29, 2014 Menudo crack Statictic. Respecto a la estructura,no se si se podrá, pero sería posible que pusiera una línea por producto, vamos si un pedido tiene 3 manzanas, 3 peras y 2 melocotones que no los separe por coma, que los ponga... En vez de Pedido XXXXXX, Manzanas, Peras, Melocotones; 3, 3, 2 Que los ponga así... XXXXXX Manzanas 3 XXXXXX Peras 3 XXXXXX Melocotones 2 No se si es posible. :/ Gracias. Link to comment Share on other sites More sharing options...
djmortis Posted August 29, 2014 Author Share Posted August 29, 2014 Bueno, ea otra opcion, si de todas formas creo que lo he logrqdo sacar por el gestor sql, despues te lo pego que no estoy en casa ahora. Link to comment Share on other sites More sharing options...
djmortis Posted August 29, 2014 Author Share Posted August 29, 2014 Cuando lo termines lo quiero el primero, faltaria mas, de seguro le saco partido en mi tienda. Link to comment Share on other sites More sharing options...
djmortis Posted August 29, 2014 Author Share Posted August 29, 2014 Aquí dejo el código correcto, por si te sirve de ayuda para el módulo. SELECT d.id_order AS ID, g.id_customer AS IDCliente, o.reference AS Referencia, g.firstname AS Nombre, g.lastname AS Apellidos, d.product_name AS Libro, d.product_quantity AS Cantidad, o.valid AS Pagado, o.payment AS FormaPago, o.invoice_date AS FechaPago, o.date_add AS FechaPedido, o.date_upd AS FechaUltimoEstado, os.name AS Estado, k.name AS Entrega FROM ps_order_detail d LEFT JOIN ps_orders o ON (d.id_order = o.id_order) LEFT JOIN ps_address ad ON (o.id_address_delivery = ad.id_address) LEFT JOIN ps_address ai ON (o.id_address_invoice = ai.id_address) LEFT JOIN ps_stock_available s ON (d.product_id = s.id_product) LEFT JOIN ps_customer g ON (o.id_customer = g.id_customer) LEFT JOIN `ps_carrier` k ON (k.id_carrier = o.id_carrier) LEFT JOIN ps_group_lang gl ON (g.id_default_group = gl.id_group) AND gl.name LIKE 'piiri%' LEFT JOIN ps_order_state_lang os ON (o.current_state = os.id_order_state) WHERE os.id_lang = 1 Link to comment Share on other sites More sharing options...
djmortis Posted August 29, 2014 Author Share Posted August 29, 2014 Pues opino que perfectisimo, en un módulo, pues mucho más comodo que desde el gestor, Link to comment Share on other sites More sharing options...
djmortis Posted September 12, 2014 Author Share Posted September 12, 2014 Statictic, creo que he llegado tarde al privado, que voy de calle en el curro, a ver si es posible que me pases de nuevo el enlace, que muero por probarlo y ahora toca finde y tengo un par de días que podré ver que tal funciona tu criatura, Link to comment Share on other sites More sharing options...
djmortis Posted September 12, 2014 Author Share Posted September 12, 2014 Gracias, instalado, te he dejado lo que me ocurre en ese post, todo perfecto, pero ahí siguen las malditas duplicaciones. :/ Link to comment Share on other sites More sharing options...
Recommended Posts