Requete SELECT un peut compliquee

sucellus

Membre actif
17 Septembre 2000
413
3
49
Montreuil
www.sucellus.net
Bonjour,

Je souhaite utilise la fonction if dans une requête select sous cette forme:

Select if( SELECT SUM (champ1) FROM table 1 WHERE champ2 > 5) > 10 , 'oui','non') FROM.......

Et ben cela ne marche pas, pour le moment je pense que c'est dû au fais que la fonction IF n'accepte pas les requête SQL en entrée, mais je sait pas :( si qqun avais une idée voir une solution :)

Merci

PS: la requete en MYSQL pas en PHP.. enfin je vais peut étre étre obligé:eek:
 
Hello,

Je n'ai absolument pas compris ce que tu souhaites faire! :confused:
Mais une chose est sûre : je n'ai jamais vu qu'on puisse inclure un IF comme tu le fais à l'intérieur d'une requête SQL. Si jamais, regarde le manuel de MySQL.

Si tu nous décris précisément la structure de tes tables et la requête que tu souhaites obtenir (en français), on pourra peut-être t'aider.

A+,

Molgow
 
En fait, il existe bien une fonction IF dans MySQL. (fonction IF). Malgré tout, je pense que tu devrais pouvoir t'en sortir autrement...

Au passage, je remarque que ta requête contient une paranthèse fermante de trop!
 
Je viens d'essayer rapidos sur une de mes bases de données, et ça marche parfaitement avec une requete dans le if ...

Bloc de code:
select `nom`,
         if( ( select sum( nom ) from concours ) < 10,
             `email`,
             `age`)
         from `concours`;

bref, ton erreur est certainement du a une erreur de syntaxe (une parenthèse en trop par exemple ...)
 
Merci [MGZ]Slug et molgow vous m'avez mis sur la bonne piste.


Voici la version finale fonctionelle

SELECT `champ1` ,
IF (

(

sum(champ2)

) < 10, 0 , 1) FROM `table`

FROM tabl2, table p, table3 cp
WHERE date_deb <= '2010-12-31' AND date_deb >= '1984-01-01' AND type_source = '####' AND type_destination = '####' AND id_destination =3 AND p.id_code_point = cp.id_code_point AND nom_code = '###'

Mais j'ai dû mettre les conditions dans la suite de ma requête.

Il devais être là le problème.