Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/11/2007, 13h29   #1
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 13h55   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Bonjour,

Tout dépend du nombre d'arguments, mais sinon tu peux le faire avec un CASE :
Code :
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
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 14h17   #3
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h15.


 
 
 
 
Partenaires

Hébergement Web