Jump to content

Requête SQL ciblant le champ "Emplacement" (dans "Entrepôt")


Recommended Posts

Bonjour,

Pour chacun de mes produits, dans "Catalogue" >> "Produits" >> "Entrepôts", j'ai attribué un "Emplacement" (voir image jointe).

J'utilise une requête SQL qui m'affiche tous mes produits et leur quantité.
Mais je souhaiterais extraire également l'emplacement de chaque produit.

Savez-vous quelle table je dois cibler dans ma requête ?
J'utilise la version 1.6.1.24 de Prestashop

copie_ecran.jpg

Edited by nicomax17 (see edit history)
Link to comment
Share on other sites

Bonjour Eolia et merci pour ta réponse,

Je viens de trouver également à l'instant en cherchant avec PhpMyAdmin !

Effectivement en faisant la requête suivante, ça m'affiche tous les emplacements :
 

SELECT `location` FROM `ps_warehouse_product_location`

J'ai pu récupérer et adapter la requête suivante pour afficher tous mes produits :

SELECT 

	p.id_product as 'ID PRODUIT',
	if(p.active = 0,'Non','Oui') as ACTIVÉ,
    pl.name as PRODUIT, 
    GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as CATEGORIE,
    p.reference as RÉFÉRENCE, 
	qp.quantity as QUANTITÉ
	
	FROM ps_product p 
	
	LEFT JOIN ps_stock_available qp ON (p.id_product = qp.id_product) 
	LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
	LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) 
	LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category) 
	LEFT JOIN ps_category c ON (cp.id_category = c.id_category) 
	LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product) 
	LEFT JOIN ps_manufacturer man ON (man.name = p.id_manufacturer) 
	
	WHERE pl.id_lang = 1 AND cl.id_lang = 1 AND p.id_shop_default = 1 AND c.id_shop_default = 1 AND p.active = 1
	
	GROUP BY p.reference

Par contre vu mon faible niveau en SQL, je ne sais pas trop comment faire pour incorporer la première requête à celle-ci ?

Link to comment
Share on other sites

J'ai essayé d'alléger la requête en essayant d'y incorporer l'appel à "ps_warehouse_product_location", comme ceci, mais je n'y arrive pas trop !

Une petite aide serait la bienvenue :)

SELECT 

	p.id_product as 'ID PRODUIT',
	if(p.active = 0,'Non','Oui') as ACTIVÉ,
    pl.name as PRODUIT,
    p.reference as RÉFÉRENCE,
    GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as CATÉGORIE, 
    p.location as EMPLACEMENT,
	qp.quantity as 'QTÉ PRESTASHOP',
    '' as 'QTÉ COMPTÉE'
	
	FROM ps_product p 
	
	LEFT JOIN ps_stock_available qp ON (p.id_product = qp.id_product)
	LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
	LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
	LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
	LEFT JOIN ps_category c ON (cp.id_category = c.id_category)

    LEFT JOIN ps_warehouse_product_location p ON (p.id_product = pl.id_product)
	
    WHERE pl.id_lang = 1 AND cl.id_lang = 1 AND p.active = 1
	
    GROUP BY pl.name  ASC

 

Edited by nicomax17 (see edit history)
Link to comment
Share on other sites

ps_product p et ps_warehouse_product_location p ont le même alias donc ça ne va pas^^

SELECT 
	p.id_product as 'ID PRODUIT',
	if(p.active = 0,'Non','Oui') as ACTIVÉ,
    pl.name as PRODUIT,
    p.reference as RÉFÉRENCE,
    GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as CATÉGORIE, 
    wpl.location as EMPLACEMENT,
	qp.quantity as `QTÉ PRESTASHOP`,
    '' as `QTÉ COMPTÉE`
	
	FROM ps_product p 	
	LEFT JOIN ps_stock_available qp ON (p.id_product = qp.id_product)
	LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
	LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
	LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
	LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
    LEFT JOIN ps_warehouse_product_location wpl ON (wpl.id_product = pl.id_product)
	
    WHERE pl.id_lang = 1 
	AND cl.id_lang = 1 
	AND p.active = 1
	
    GROUP BY pl.name  ASC

 

Link to comment
Share on other sites

  • 8 months later...

Bonjour,

Je suis passé à la version Prestashop 1.7.8.6.

Du coup, la requête qui fonctionnait avec la version 1.6.1.24 ne fonctionne plus sous la 1.7.8.6 dans le sens où l'emplacement n'est plus affiché ! >> toutes les colonnes sont ok sauf celle de EMPLACEMENT qui est vide.

Une petite aide serait la bienvenue pour modifier la requête suivante :

SELECT 
	p.id_product as 'ID PRODUIT',
	if(p.active = 0,'Non','Oui') as ACTIVÉ,
    pl.name as PRODUIT,
    p.reference as RÉFÉRENCE,
    GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as CATÉGORIE, 
    wpl.location as EMPLACEMENT,
	qp.quantity as `QTÉ PRESTASHOP`,
    '' as `QTÉ COMPTÉE`
	
	FROM ps_product p 	
	LEFT JOIN ps_stock_available qp ON (p.id_product = qp.id_product)
	LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
	LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
	LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
	LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
    LEFT JOIN ps_warehouse_product_location wpl ON (wpl.id_product = pl.id_product)
	
    WHERE pl.id_lang = 1 
	AND cl.id_lang = 1 
	AND p.active = 1
	
    GROUP BY pl.name  ASC

Merci par avance :)

Edited by nicomax17 (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...