Hola amigos. Tengo la siguiente consulta SQL para generar una orden de compra pero no puedo recuperar el dato del proveedor. Ustedes me pueden ayudar para corregir la consulta ?
SELECT d.id_order, os.id_order_state AS ID_Estado, os.name AS estado, o.date_upd AS fecha, d.product_name AS producto, d.product_reference AS ref_ReleMat, d.product_supplier_reference AS ref_proveedor, su.name AS Proveedor, d.product_quantity AS uds, CONCAT_WS( ' ', g.firstname, g.lastname ) AS cliente, CONCAT_WS(' ', ad.address1, ad.address2, ad.postcode, ad.city, ad.other, ad.phone, ad.phone_mobile) AS envio, gl.name AS grupo
FROM ps47f_order_detail d
LEFT JOIN ps47f_orders o ON ( d.id_order = o.id_order )
LEFT JOIN ps47f_customer g ON ( o.id_customer = g.id_customer )
LEFT JOIN ps47f_stock_available s ON (d.product_id = s.id_product)
LEFT JOIN ps47f_address ad ON (o.id_address_delivery = ad.id_address)
LEFT JOIN ps47f_address ai ON (o.id_address_invoice = ai.id_address)
LEFT JOIN ps47f_group_lang gl ON ( g.id_default_group = gl.id_group )
LEFT JOIN ps47f_order_state_lang os ON ( o.current_state = os.id_order_state )
LEFT JOIN ps47f_supplier su ON ( d.product_supplier_reference = su.id_supplier )
WHERE os.id_lang =1 and os.id_order_state=3
GROUP BY d.id_order, d.product_name
ORDER BY d.id_order DESC
Saludos cordiales
URL del sitio: Contenido solo visible a usuarios registrados
Hola.
Tengo la siguiente consulta SQL para generar una orden de compra pero no puedo recuperar el dato del proveedor
¿ Cuando dices que no puedes recuperar el dato, te estas refiriendo a que te conectas a una base de datos externa ( Base de datos de tu proveedor ) para actualizar datos de productos, etc ?
¿ tienes acceso a la base de datos de ese proveedor ?
¿ esa consulta de donde la sacaste, te la dio tu proveedor ?
Perdona las consultas, pero nos hacen falta datos para poder informarte mejor.
Un saludo
Estimado Pepe. Esta consulta la hice en referencia a otras que se encuentran en un foro de prestashop.
La realizo en Parametros avanzados--> consultas MySQL
Quiero tener información de los productos que se compran para hacer la solicitud de producto a mis proveedores y agilizar mi tiempo de proceso y entrega, y no he encontrado otra forma de realizarlo.
La idea es tener los productos comprados, descripciones, cantidades, id proveedor y descripción proveedor, factura y otros datos más.
Con ello puedo exportar a Excel y hacer las ordenes de compra para cada proveedor.
Les pido su ayuda ya que no tengo experiencia en la creación de consultas sql pero se que me van a servir mucho estos datos.
Hola
Te aparece algùn error en la consulta? o simplemente no tienes datos?
Envía la url del foro desde donde sacaste la consulta.
He probado la consulta desde PHPMyadmin y no veo errores en sintaxis, no me devuelve registros pero si tu si tienes datos si que deberìa devolverte al menos algunos pedidos. Podrías probar también esto, desde tu cuenta de Cpanel > PHPMyadmin > Selecciona tu BD y luego en el tab de SQL colocar la consulta y luego ejecturar (continuar)
La consulta tiene una condicion
WHERE os.id_lang =1 and os.id_order_state=3
Quiere decir que esta funcionando sólo para un idioma (con id=1 ) y para un tipo de pedido (id=3)
Saludos.
Estimado John La consulta si recupera los datos pero Necesito que me indiques cuales son los campos que debo agregar para que me devuelva el proveedor de cada producto.
Saludos
Hola
Prueba agregando su.name , que es el alias de la tabla supplier y name el nombre del campo, tu consulta quedaría :
SELECT d.id_order, su.name proveedor, os.id_order_state AS ID_Estado, os.name AS estado, o.date_upd AS fecha, d.product_name AS producto, d.product_reference AS ref_ReleMat, d.product_supplier_reference AS ref_proveedor, su.name AS Proveedor, d.product_quantity AS uds, CONCAT_WS( ' ', g.firstname, g.lastname ) AS cliente, CONCAT_WS(' ', ad.address1, ad.address2, ad.postcode, ad.city, ad.other, ad.phone, ad.phone_mobile) AS envio, gl.name AS grupo FROM ps47f_order_detail d LEFT JOIN ps47f_orders o ON ( d.id_order = o.id_order ) LEFT JOIN ps47f_customer g ON ( o.id_customer = g.id_customer ) LEFT JOIN ps47f_stock_available s ON (d.product_id = s.id_product) LEFT JOIN ps47f_address ad ON (o.id_address_delivery = ad.id_address) LEFT JOIN ps47f_address ai ON (o.id_address_invoice = ai.id_address) LEFT JOIN ps47f_group_lang gl ON ( g.id_default_group = gl.id_group ) LEFT JOIN ps47f_order_state_lang os ON ( o.current_state = os.id_order_state ) LEFT JOIN ps47f_supplier su ON ( d.product_supplier_reference = su.id_supplier ) WHERE os.id_lang =1 and os.id_order_state=3 GROUP BY d.id_order, d.product_name ORDER BY d.id_order DESC
Saludos.
Estimado Jhon. Ya realice el cambio pero no devuelve nada aunque si tengo asociado el producto al proveedor.
El tema es que el campo product_supplier_reference se refiere a la referencia que tiene el producto en el proveedor y NO al id de proveedor. Es por eso que no devuelve datos.
Me puedes ayudar a corregirlo? solo requiero agregar que proveedor suministra el producto
Saludos y quedo a la espera de tus indicaciones
Hola
Según veo la consulta si que debería darte datos, no te aparece nada?, que es lo que te devuelve?
La tabla es : ps47f_supplier su (alias su) , por lo tanto tienes todos los campos disponibles en este alias.
Prueba con esta consulta que solo relaciona las dos tablas, pruebas probarla desde PHPMyadmin, busca la base de datos y luego en el tab de SQL pega la consulta.
SELECT su.name proveedor, d.product_name AS producto FROM ps47f_order_detail d LEFT JOIN ps47f_supplier su ON ( d.product_supplier_reference = su.id_supplier )
Verifica si te devuelve datos.
Saludos.
Estimado. Ya hice la revisión y no me devuelve ningún dato de proveedor.
Será que la consulta dirige mal y hay que agregar otra tabla para recuperar el dato?
Hola
Estas probando en PHPMyadmin?
Verifica si esta tabla tiene datos :
ps47f_supplier
Verifica tambien si esta tiene datos
ps47f_order_detail
Verifica si al menos hay alguna relación entre ambas, es decir con el campo product_supplier_reference de la tabla ps47f_order_detail y el id de la tabla ps47f_suplier, esto lo compruebas manualmente.
Saludos.