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

Requêtes MySQL Discussion :

inverser deux valeurs dans une meme table.


Sujet :

Requêtes MySQL

  1. #1
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut inverser deux valeurs dans une meme table.
    Bonjour,

    J'ai une table contenant des questions et un ordre d'affichage

    t_question
    ------
    que_id - que_txt - que_ordre
    1 blablabla 1
    2 tutututu 2
    3 hophophop 4

    J'aimerais pouvoir faire "remonter" une question dans la sequence d'ordre
    Dans mon exemple ca serait par exemple en remontant la question 3 :
    1 blablabla 1
    2 tutututu 4
    3 hophophop 2

    Est-ce possible autrement qu'en multipliant les requetes ?
    - SELECT que_ordre FROM t_question WHERE que_id = question_a_remonter
    - SELECT max(que_ordre) as newFROM t_question WHERE que_ordre < ordre_trouvé LIMIT 1
    - UPDATE t_question SET que_ordre = new
    etc.

  2. #2
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Si c'est juste pour une inversion ça pourrait se faire avec quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE t_question SET que_ordre = IF(que_ordre=2, 3, 2) WHERE que_ordre IN (2,3);
    Sinon ça pourrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE t_question SET que_ordre = que_ordre+1 WHERE que_ordre<=nouvellePos AND que_ordre>anciennePos;
    UPDATE t_question SET que_ordre = nouvellePos WHERE que_id = id;
    A supposer que l'ordre soit complet (pas de trous).

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Malheureusement il peut y avoir des trous.

    Je retiens ta première proposition d'écriture qui me permet de faire les deux update en une seule ecriture.

    Merci pour ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Recherche deux valeurs dans une table
    Par drakkar_agfa dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/09/2009, 16h03
  2. Echanger/Swap de deux valeurs dans une table
    Par Yvan76 dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/08/2009, 16h23
  3. [MySQL] Permutation de deux valeurs dans une même colonne de table
    Par andry.aime dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/01/2009, 13h19
  4. Deux NuméroAuto dans une même table
    Par ginaub0 dans le forum Access
    Réponses: 1
    Dernier message: 31/07/2006, 17h13
  5. 2 auto increment dans une meme table
    Par gesualda dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 12/10/2005, 09h31

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