Page 1 sur 1

prob requete sql phpmyadmin

Posté : 06 juil. 2014, 12:36
par floh
Bonjour a tous
Après quelques aspirines et pas de résultat, je viens vers vous pour trouver une solution
j ai une base MYSQL "shop" dans laquel je voudrai faire des modif avec une requette SQL en tache crown

Merci a tous pour votre aide


Dans la table PS_stock j ai

id_stock id_warehouse id_product id_product_attribute physical_quantity
2882 1 9755 400724 1
2883 1 9768 400771 0
2883 1 9768 400774 5
2883 1 9768 400776 5
2884 1 9769 400780 0

Dans une autre table S_product_attributs j ai

id_product_attribute id_product default_on
400724 9755 0
400771 9768 1
400774 9768 0
400775 9768 0
400780 9769 0

et je voudrai cela comme resultat

Dans la table PS_product_attributs
id_product_attribute id_product default_on
400724 9755 1
400771 9768 0
400774 9768 1
400775 9768 0
400780 9769 0
c est a dire que je fait une mise a jour du 'defaut_on" si il a une quantité supérieure a 0 dans PS_stock
Si defaut_on est deja sur 1 et physical quantity est sup a 0 , ne rien faire

Re: prob requete sql phpmyadmin

Posté : 06 juil. 2014, 13:30
par moogli
Salut,

Je partirais sur une procédure stockée qui fait select des colonnes id produit et id attribut avec un simple prédicat qui stipule la quantité supérieure à zéros.

Dans le traitement du curseur un update avec un prédicat sur les deux colonnes id courante.


Je vois la des défauts de conception de ton modèle (redondance de données) qui pourrait te permettre de simplifier la chose grandement.

Par exemple si la première référence la clef primaire de la seconde plutôt qu'une clef composée (composée de fk d'ailleurs) tu pourrais select en une seule requête update avec un subselect.

@+

Re: prob requete sql phpmyadmin

Posté : 06 juil. 2014, 14:47
par floh
Merci Moogli
Les tables et les colonnes ne sont pas modifiables car elles viennent de prestashop
Et je dois faire la modif sur 30000 articles , donc forcement a la main c est long, et des que des articles sont vendues je dois faire une mise a jour avec cette fameuse requete, afin d optimiser le dvlp que j ai fait en front office

Je t avoue que j ai aucune formation en SQL et php, je fais juste du copie/coller et quelles que modif

Mais la sur cette requete, je rame...
Merci pour ton retour
flo

Re: prob requete sql phpmyadmin

Posté : 06 juil. 2014, 23:43
par moogli
prestashop ou pas c'est foireux :mrgreen:

pour le sql
http://sqlpro.developpez.com/

sinon pour ton problème un truc du genre

voila une procédure, qui sur le principe devrait t'aider

[mysql]
DELIMITER |
CREATE PROCEDURE updateStockAttribut()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE idp VARCHAR(20);
DECLARE ida VARCHAR(20);
DECLARE c_stock CURSOR FOR SELECT
id_product,
id_product_attribute
FROM PS_stock
WHERE physical_quantity > 0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

PREPARE up FROM 'update PS_product_attributs set
default_on = 1
where id_product=? and id_product_attribute=? and default_on = 0';

OPEN c_stock;

REPEAT
FETCH c_stock
INTO idp, ida;
IF done = 0
THEN
SET @p1 = idp;
SET @p2 = ida;
EXECUTE up
USING @p1, @p2;
END IF;
UNTIL done
END REPEAT;

END|

DELIMITER ;[/mysql]

utilisation [mysql]
call updateStockAttribut();
[/mysql]

comme ça tu as un exemple de procédure stockée et de requête préparée.

suivant ta version de mysql il est possible que cela ne fonction pas (< 5.1.3).

@+

Re: prob requete sql phpmyadmin

Posté : 07 juil. 2014, 07:04
par Invité
ok
je vais regarder