Jump to content

[RESOLU] requete SQL sur les stocks produits


Recommended Posts

Bonjour !

 

Alors voilà j'ai 2 requetes qui fonctionnent très bien avec prestashop 1.6.0.9 mais l'une est complémentaire de l'autre et l'idée c'est d'avoir une seule requête :wacko: .

 

l'objectif : intégrer les produits qui n'ont pas de déclinaison dans cette requête pour avoir l'état de mon stock au complet :

SELECT 
    p.id_product,
    p.id_category_default,
    GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ";") as categories,
    pa.reference,
    pl.name, 
    GROUP_CONCAT(DISTINCT(pal.name) SEPARATOR "; ") as combination, 
    p.price,
    p.wholesale_price,	
    pq.quantity
FROM ps_product p
LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product) 
LEFT JOIN ps_stock_available pq ON (p.id_product = pq.id_product AND pa.id_product_attribute = pq.id_product_attribute) 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_product_attribute_combination pac ON (pa.id_product_attribute = pac.id_product_attribute)
LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute)
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)
WHERE pl.id_lang = 1 
AND pal.id_lang = 1 
GROUP BY pa.reference
ORDER BY p.id_product, pac.id_attribute

en effet, cette requête n'extrait les stocks que les produits ayant des déclinaisons moi je voudrais aussi ceux qui n'en n'ont pas :wub:

 

 

Cette 2ème requête additionne toutes les quantités de toutes les déclinaisons du produit de tous les produits (avec et sans déclinaisons) :

SELECT 
	p.id_product, 
	p.active, 
	pl.name, 
	GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, 
	p.reference, 
	p.price, 
	p.wholesale_price, 
	p.reference,  
	man.name, 
	qp.quantity, 
	pl.name,  
	qp.quantity 
	
	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 
	
	GROUP BY p.id_product

merci d'avance pour votre aide !

 

Appo :)

Edited by Appolline (see edit history)
  • Thanks 1
Link to comment
Share on other sites

Re, alors j'ai avancé avec un ami sur le problème.

mais j'ai un nouveau souci. la requête fonctionne très bien depuis Phpmyadmin, par contre l'outil prestashop me renvoit un message d'erreur rouge :

"Lorsque plusieurs tables sont utilisées, chaque attribut doit être référencé à l'une de ces tables."

 

Merci d'avance pour votre aide

 

Appo

 

voici la requete en question :

SELECT 
    p.id_product,
    p.id_category_default,
    GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ";") as categories,
    CASE WHEN pa.reference IS NULL THEN p.reference ELSE pa.reference END as reference,
    pl.name, 
CASE WHEN pa.price IS NULL THEN p.price ELSE p.price + pa.price END as price,

p.wholesale_price,	
    pq.quantity
FROM ps_product p
LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product) 
LEFT JOIN ps_stock_available pq ON (p.id_product = pq.id_product AND (pa.id_product_attribute IS NULL OR pa.id_product_attribute = pq.id_product_attribute) ) 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_product_attribute_combination pac ON (pa.id_product_attribute = pac.id_product_attribute)
LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute) AND pal.id_lang = 1
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)
WHERE pl.id_lang = 1
GROUP BY reference
ORDER BY p.id_product, pac.id_attribute

Link to comment
Share on other sites

Sujet résolu sur les forums anglophones.

Apparemment suivant les versions de prestashop, certains avaient l'erreur, d'autres non dans le backoffice.

 

Alors pour ma part, voici ma solution pour faire un export csv de tous les produits d'un prestashop 1.6.0.0.9 :

 

1) installer le module gratuit big data

2) pour un fichier csv propre changer SEPARATOR ";" par SEPARATOR "|"

 

Voilà ! et de rien pour la requête c'est cadeau ! :P

  • Like 2
Link to comment
Share on other sites

  • 1 year later...

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...