Salut tout le monde !
(Pour info je vais détailler mon problème, mais si vous voulez voir directement ma question, elle se trouve tout en bas ;-)
Voilà je possède une table "maTable" contenant 3 champs :
- id (int)
- nom (varchar)
- ordre (int)
Passons les 2 premiers champs qui parlent d'eux-même, j'en viens directement au champ "ordre" qui permet de classer mes lignes dans l'ordre de mon choix, dans ma page web... Pour mettre à jour le classement d'une ligne, je fais deux requêtes MySQL :
- La première requête permet d'incrémenter toutes les lignes dont le classement actuel est plus grand ou égal au nouveau classement à appliquer sur une ligne donnée (j'espère que vous suivez ;-).
- La deuxième permet d'attribuer le nouveau classement sur ma ligne donnée...
Bref, mon problème concerne en fait ma première requête (voici mes deux requêtes, disons par exemple que je souhaite passer mon produit dont l'ID est "24", à la position n° "10") :
*********************************
UPDATE maTable
SET ordre = ordre + 1
WHERE ordre >= 10 (*)
AND ordre < MAX(ordre) <-- c'est là où ça coince :-S
*********************************
(*) Le chiffre "10" indique donc dans ce cas que je souhaite classer ma nouvelle ligne à la 10è position, on est d'accord ;-).
DEUXIÈME REQUÊTE :
*********************************
UPDATE maTable
SET ordre = '10'
WHERE id = 24
*********************************
Voilà, revenons donc à ma première requête, et particulièrement à cette ligne, qui est la fautive :
--> AND ordre < MAX(ordre)
En gros ma première requête demande à incrémenter toutes les lignes de ma table dont l'ordre est >= 10, "SAUF la ligne dont le champ ORDRE a la valeur la plus grande" (AND ordre < MAX(ordre)). Je pensais que "ordre < MAX(ordre)" pourrait répondre à ma demande mais quand je mets cette ligne, il ne se passe rien...
Donc ma question principale est (ENFIN !! :-) :
"Comment incrémenter le champ "ordre" de toutes les lignes de ma table >= à un chiffre donné, SAUF la ligne où le champ "ordre" a la plus grande valeur ? Y a-t-il une autre requête possible ?
Merci pour vos réponses, et @ bientôt.
Tonton
Partager