2017-05-24 2 views
0

J'ai transféré une ancienne base de données à un nouveau pour VirtueMart (Joomla Component), et dans la base de données il y a un tableau qui indique où les médias (images) doivent correspondre (à quel produit ils pointent), et le support est commandé par 1,2,3,4, etc. 1 étant l'image principale du produit.Alter ordre pour les lignes avec les mêmes valeurs

Lorsque j'ai transféré l'ancienne base de données vers la nouvelle, il n'y avait pas de champ comme la commande.

enter image description here

Le bloc rouge affiche l'ordre de manière incorrecte (1,1,1,1), et l'affichage des blocs verts correctement, je dois trouver un moyen d'automatiser le processus, car il y a plus de 5000 entrées dans la base de données.

J'pensais d'automatiser le processus par PHP, mais je ne peux pas comprendre comment pourrais-je comparer si les lignes ont la même valeur et mettre à jour la valeur de l'ordre

S'il y a un moyen possible de faire ceci, apprécierait beaucoup l'aide.

Cordialement.

+0

Comment déterminez-vous l'ordre des colonnes que vous avez? – squgeim

Répondre

0

Vous pouvez utiliser des variables à cet effet:

set @vpi := -1; 
set @rn := 0; 

update VirtueMart vm 
    set ordering = (@rn := if(@vpi = virtualmart_product_id, @rn + 1, 
           if(@vpi := virtualmart_product_id, 1, 1) 
          ) 
        ) 
    order by virtualmart_product_id, id; 
+0

Cela a fonctionné comme un charme, merci. Je n'ai jamais eu l'occasion d'utiliser des variables, donc je suis un peu désemparé à ce sujet, j'ai appris quelque chose grâce à votre résolution merci! – alyatek