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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ 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