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

SQL Procédural MySQL Discussion :

incrément d'un colonne selon plusieurs valeurs ?


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut incrément d'un colonne selon plusieurs valeurs ?
    Bonjour,

    Soit une table :

    Table_1
    id INT AUTO_INCREMENT PRIMARY KEY,
    score INT DEFAULT 0,
    arg1 INT,
    arg2 INT,
    arg3 INT,

    Je souhaite incrémenter 'score' de 1 pour chaque arg < 0.

    score = 3 si arg1 et arg2 et arg3 < 0 par exemple.

    Je ne sais pas si je dois passer par une procédure ou si c'est faisable avec un seul UPDATE.

    Pourriez-vous m'aider là-dessus ?

    En vous remerciant,

    C. Tobini

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Tout dépend du nombre d'arguments, mais sinon tu peux le faire avec un CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE table_1
    set score = CASE WHEN arg1 < 0 and arg2 < 0 and arg3 < 0 THEN 3
                     WHEN (arg1 < 0 and (arg2 < 0 or arg3 < 0)) or (arg2 and arg3 < 0) THEN 2
                     WHEN (arg1 < 0 or arg2 < 0 or arg3 < 0) THEN 1
                     ELSE 0 END
    En gros, voilà le principe, sachant que je ne suis pas sûr des conditions exactes...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bonjour et merci de la réponse,

    Je voulais passer par un CASE mais ça inclu que chaque vérification soit exclusive.

    Je voudrais vérifier chaque condition, mais il me semble qu'un IF permet de renvoyer un résultat et pas d'affecter une colonne.

    C. Tobini

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

Discussions similaires

  1. [MySQL] Filtrer des éléments d'une liste selon plusieures valeurs d'un champ d'une table bdd
    Par amdawb dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 08/02/2015, 15h59
  2. [2005] Colonne avec plusieurs valeurs
    Par taibag dans le forum Développement
    Réponses: 8
    Dernier message: 12/11/2013, 13h42
  3. Réponses: 2
    Dernier message: 18/05/2010, 11h31
  4. [XL-2003] filtre d'une colonne selon la valeur d'un cellule
    Par jonleboss44 dans le forum Excel
    Réponses: 2
    Dernier message: 30/11/2009, 21h55
  5. Colonne avec plusieurs valeurs
    Par neliam dans le forum Langage SQL
    Réponses: 10
    Dernier message: 11/04/2008, 13h20

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