Rechercher : dans
Par :

SQL + condition IF ?

Dernière réponse le 27 nov 2008 à 00:10:06 Tipo, le 26 nov 2008 à 23:22:26 
 Signaler ce message aux modérateurs

Bonjour,

Je me pose une question.

Est-il possible de faire un test de condition de type IF... ELSE... dans une seule et même requête SQL ?

Je vais rechercher des valeurs à des dates précises et en fait un rapport pour obtenir certains taux.
Par contre, je ne dois pas être en mesure de faire ce genre de requêtes si une des valeurs équivaut à ZERO.
Division par zéro... ne doit pas être possible!

Je dois donc procéder à un test de la valeur avant de faire le rapport directement dans la requête SQL.

Est-ce que cela est possible ? ou dois-je absolument passer par deux requêtes différentes et m'occuper du rapport et de sa condition (aucune valeur = ZERO) à un niveau supérieur à SQL ?

Merci et bravo à celui qui pourra m'aider.


Tipo

Meilleures réponses pour « SQL + condition IF ? » dans :
[Excel] Colorer des cellules sur conditions VoirIl existe dans Excel des fonctions très pratiques mais peu connues et peu utilisées. Exemple : vous souhaitez qu'une cellule se colore automatiquement en rouge (ou autre mise en forme de police, de bordure, de trame) selon une condition : un...
Excel - Mises en forme conditionnelles illimitées VoirMises en Forme Conditionnelles Illimitées Introduction Principe Code Fichier joint Introduction La Mise en Forme Conditionelle (ou MFC) permet d'appliquer, à une cellule ou à plusieurs cellules sélectionnées, différents formats qui...
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Javascript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non, ce qui permet notamment de donner de l'interactivité à vos scripts. L'instruction...
Langage C - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

moi, le 26 nov 2008 à 23:31:52

J'ai pas bien compris ton problème mais il me semble que faire
SELECT * FROM table WHERE date is not 0; devrait convenir

ca me parait trop simple pour que ce soit ce que tu veux.

Répondre à moi

2

Tipo, le 26 nov 2008 à 23:40:15

Non ce n'est pas cela mon problème. Je présente un exemple :

J'ai une table BONBONS avec un ID, NOM, DATE.

L'ID est unique, le NOM défini un type de bonbon par exemple et la date, la date à laquelle j'ai ajouté le bonbon dans ma boite à bonbons.

Ce que je veux c'est savoir combien de bonbons "à la menthe" ont été mis dans ma boite en une semaine, il y a deux semaine et en une semaine, il y a une semaine. Donc 2 quantités en fait. Et je veux voir si il y a eu une augumentation, diminution ou aucun des deux d'ajout de bonbons dans cette boite.

Mais, je ne peux pas faire ce rapport lorsque l'ajout du bonbon = ZERO sinon ça revient à faire une division avec un ZERO et c'est faut.

(Je sais, dans mon exemple on les mets dans la boite, mais c'est pour le bien des dents)

Répondre à Tipo

3

Tipo, le 26 nov 2008 à 23:42:53

Je dois donc d'abord faire un contrôle pour savoir si la quantité d'ajout de bonbon = ZERO.
En cas de réussite, je fais le rapport, sinon je fais autre chose.

Un IF, ELSE en quelque sorte dans une requête SQL.

Répondre à Tipo

4

moi, le 26 nov 2008 à 23:52:22

Mais la tu fais une soustraction. Je vois pas de division ?

Répondre à moi

6

moi, le 26 nov 2008 à 23:56:45

Ok c'est bon je vois la division...

Répondre à moi

8

Droopy_, le 26 nov 2008 à 23:59:51

Tu peux faire des IF en SQL :
http://dev.mysql.com/doc/refman/4.1/en/control-flow-function­s.html

Honnêtement, je pencherait plus pour le faire dans un langage de plus haut niveau que SQL.
Mais ça doit être possible.

Répondre à Droopy_

5

Tipo, le 26 nov 2008 à 23:52:32

Comme bien souvent, je trouve réponse à mes questions tout seul et fais partager la solution pour si jamais.

IF(expr1,expr2,expr3).
A voir sous : http://dev.mysql.com/doc/refman/5.0/fr/control-flow-function­s.html

Cela fonctionne parfaitement avec MYSQL.

Répondre à Tipo

7

moi, le 26 nov 2008 à 23:59:04

Juste une petite précision:
IF(condition, exp_si_condition_vrai, exp_si_condition_fausse)

Répondre à moi

9

 Tipo, le 27 nov 2008 à 00:10:06

C'est tout à fait ça.
Merci en tout cas d'avoir passé un peu de temps pour tenter de répondre à cette question.
Tous les bonbons sont disponibles maintenant !

Répondre à Tipo