Bonjour tout le monde,
Ça fait longtemps que je n'ai pas fait de SQL, et la je sèche méchant sur un update.
En lecture, j'ai 2 tables. La 1° contient des produits et leur quantité, la seconde elle contient leur placement dans une liste.
Je fais donc ceci pour l'affichage :
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT cat.`id_category`, cat.`position`, pr.`id_product`, pr.`quantity` FROM `ps_product` pr LEFT JOIN `ps_category_product` cat ON cat.id_product = pr.id_product ORDER BY cat.`id_category`, pr.`quantity`
C'est nickel chrome.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 id_category ;position ;id_product ;quantity 1 ;1 ;2 ;100 1 ;3 ;7 ;180 1 ;2 ;6 ;249 1 ;4 ;5 ;274 1 ;0 ;1 ;800 1 ;3 ;8 ;5001 2 ;0 ;2 ;100 2 ;1 ;7 ;180 2 ;1 ;1 ;800 3 ;0 ;9 ;1 3 ;0 ;8 ;5001 4 ;0 ;6 ;249 4 ;0 ;5 ;274
Maintenant, ça devient chaud pour moi.
Je dois réorganiser l'ordre des produits en fonction de leur quantité. Les règles du jeu :
- Un produit peut être dans plusieurs catégories (id_category ).
- A chaque changement de catégorie, le premier produit doit avoir position à 1. Les suivants sont incrémentés de 1.
- L'ordre des produits dans chaque catégorie se fait par leur quantité.
Je souhaite donc faire un UPDATE pour obtenir ceci :
Et la, c'est le drame, je sèche comme une vieille bouse. Impossible (pour moi) de gérer la rupture sur id_category.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 id_category ;position ;id_product ;quantity 1 ;1 ;2 ;100 1 ;2 ;7 ;180 1 ;3 ;6 ;249 1 ;4 ;5 ;274 1 ;5 ;1 ;800 1 ;6 ;8 ;5001 2 ;1 ;2 ;100 2 ;2 ;7 ;180 2 ;3 ;1 ;800 3 ;1 ;9 ;1 3 ;2 ;8 ;5001 4 ;1 ;6 ;249 4 ;2 ;5 ;274
Sauf a scripter une moulinette toute dégueulasse avec des updates en boucle.
Quelqu'un aurait-il une solution, ou un début de piste ?
Merciiiiiii.
Partager