IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Update pour re-numérotation automatique


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut Update pour re-numérotation automatique
    Bonjour a tous,

    J'ai un champs dans une table que souhaite ré-ordonner.
    Pour plus de lisibilité, je vais prendre un exemple fictif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create table PANIER
    (
       ID_PANIER                  int                            not null,
       ID_USER                     int                            not null,
       ID_ARTICLE                  int                            not null,
       NUM_ARTICLE                     smallint                       not null,
       primary key (ID_PANIER)
    )
    Dès qu'un acheteur (ID_USER) ajoute un article (ID_ARTICLE), et on attribue un numéro d'ordre (NUM_ARTICLE) qui est calculé à partir d'un COUNT.

    Par exemple :
    un acheteur (ID_USER) à sélectionné 3 articles (ID_ARTICLE).
    NUM_ARTICLE pour ces trois articles : 0,1,2

    Bon l'acheteur se ravise (c'est trop cher), et supprime l'article ID_ARTICLE qui dans son panier est ordonné avec "NUM_ARTICLE"=1.
    NUM_ARTICLE pour les deux articles restant : 0,2

    Est-il possible de renuméroter la liste des 2 articles (en conservant l'ordre) pour que NUM_ARTICLE pour les deux articles restants : 0,1 ??

    Coté applicatif ça pose pas de problème de faire défiler chaque éléments, et de faire un UPDATE dans une boucle for, mais je me demande si en SQL c'est possible ?

    Qu'en pensent nos gourous SQL ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 436
    Points
    28 436
    Par défaut
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE  panier
    SET     num_article = 
                (   SELECT  COUNT(*)
                    FROM    panier  AS cnt
                    WHERE   panier.id_panier = cnt.id_panier
                        AND panier.num_article > cnt.id_panier 
                )
    WHERE   id_panier = :id_panier

  3. #3
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    #1093 - You can't specify target table 'panier' for update in FROM clause

    Arff.. dommage, je trouvait votre code élégant.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    Pour info : MySQL: 5.0.45

Discussions similaires

  1. Numérotation automatique pour devis
    Par Lola25614 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/03/2015, 19h33
  2. Réponses: 9
    Dernier message: 16/12/2010, 16h12
  3. update pour calcul pourcentage (SQL SERVER 2000)
    Par meufeu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2005, 09h04
  4. Numérotation automatique selon les utilisateurs
    Par Safaritn dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/08/2005, 14h11
  5. [sql] update pour debutant
    Par zebulix13 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/06/2004, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo