[SQL] Instruction conditionnelle IF avec MySQL

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


SuperPJ
WRInaute passionné
WRInaute passionné
 
Messages: 513
Inscription: Sam Jan 15, 2005 5:44

[SQL] Instruction conditionnelle IF avec MySQL

Message le Lun Aoû 01, 2005 5:16

Voici ce que j'ai lu sur :
http://dev.mysql.com/doc/mysql/en/if-statement.html
Code: Tout sélectionner
IF search_condition THEN statement_list
        [ELSEIF search_condition THEN statement_list] ...
        [ELSE statement_list]
END IF

IF implements a basic conditional construct. If the search_condition evaluates to true, the corresponding SQL statement list is executed. If no search_condition matches, the statement list in the ELSE clause is executed. statement_list can consist of one or more statements.



Ce que j'essaie de faire c'est :
Code: Tout sélectionner
IF SELECT champ1 FROM table WHERE champ1='valeur1' THEN UPDATE table SET champ2=champ2+1 WHERE champ1='valeur1'
        ELSE INSERT INTO table (champ1,champ2) VALUES ('valeur1','valeur2')
END IF

Mais ça ne marche pas :(


J'ai aussi essayé avec des ";"
Code: Tout sélectionner
IF SELECT champ1 FROM table WHERE champ1='valeur1' THEN UPDATE table SET champ2=champ2+1 WHERE champ1='valeur1';
        ELSE INSERT INTO table (champ1,champ2) VALUES ('valeur1','valeur2');
END IF

Mais ca ne fontionne pas non plus : "you have an sql error".


J'ai posé la question sur 2 autres forums, aucune réponse :(
Je ne comprends pourquoi ça ne fonctionne pas alors que d'après la doc ça le devrait :?

Didier_S
WRInaute passionné
WRInaute passionné
 
Messages: 563
Inscription: Mar Aoû 24, 2004 22:25

Message le Lun Aoû 01, 2005 5:49

Ha c'est bien digne d'un SuperPJ ...
en effet, la doc n'a pas l'air très claire, et l'un des commentaires dit "there is no real answer"
c'était trop beau pour être vrai ?
on devrait peut-être contacter le support mysql, qui sait...

vnico
Nouveau WRInaute
 
Messages: 29
Inscription: Mar Avr 19, 2005 20:30

Message le Lun Aoû 01, 2005 7:33

Essaye avec des parenthèses :

IF (SELECT champ1 FROM table WHERE champ1='valeur1') THEN (UPDATE table SET champ2=champ2+1 WHERE champ1='valeur1')
ELSE (INSERT INTO table (champ1,champ2) VALUES ('valeur1','valeur2'))
END IF

Verifie egalement la version de ton serveur MySQL, ca fonctionne à partir d'une certaine version je crois.

Nico


ysimon
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 144
Inscription: Mar Fév 24, 2004 14:07

Message le Lun Aoû 01, 2005 7:48

je vois pas pourquoi un
select champ from table where champ=toto renverrait true or false

donc, moi, en sql, quand je veux savoir si un enregistrement existe, je vais un
select count(*) from table where champ = toto

donc, dans ton cas, je ferais un truc genre

if (select count(*) from table where champ1=valeur > 0) ....

plutot

shrom
WRInaute passionné
WRInaute passionné
 
Messages: 865
Inscription: Lun Juil 05, 2004 22:37

Message le Lun Aoû 01, 2005 9:54

C'est la syntaxe des procédures stockée qui ne sont disponibles qu'à partir de MySQL 5.

Avec une version inférieure, il n'y a pas moyen de faire ce genre de tests, il faut passer par le langage de programmation.


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités