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

Langage SQL Discussion :

Introduire une condition dans une requete


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut Introduire une condition dans une requete
    Bonjour,
    je voudrais savoir il est possible d'introduire une condition dans une requete de telle sorte qu'elle affiche (par exemple) les valeurs 'oui' ou 'non' si une condition est remplie à l'interieur dans la requete.

    Par exemple, imaginons une table avec des produits et des quantités.
    Je souhaiterais afficher 'ok' en face des produits dont la quantité est > à 500 et 'non' en face des produits dont la quantité est < à 500

    est-ce faisable?

    merci d'avance pour votre aide
    DD.

  2. #2
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut
    Tu peux utiliser IF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select *, (if monchamp>500 then 'OK' else 'KO' endif)
    from matable
    le bloc if..then..else est considéré comme une sous-requête
    7 fois à terre, 8 fois debout

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    merci maaaais...

    j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT produit,stock, (if stock>4 then 'OK' else 'KO' endif)
    FROM Produits;
    et j'ai rencontré l'erreur suivante (je bosse sur oracle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    missing right parenthesis
    D'où peut venir l'erreur? merci

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonjour,

    Si c'est du Oracle, tu peux essayer CASE ... WHEN ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT produit,stock, case when stock>4 then 'OK' else 'KO' end
    FROM Produits;

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    merci Laly ça fonctionne

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    Et en dehors de Oracle
    Existe-t-il une clause normalisée pour faire quelque chose du genre :
    SELECT "OK" … affiche "OK" si …

    merci

  7. #7
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut
    Le IF..THEN..ELSE..ENDIF et le CASE..WHEN...ELSE ...ENDCASE sont normalisés et doivent fonctionner sur tous les SGBDR qui respectent la norme
    7 fois à terre, 8 fois debout

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Désolé de te contredire le IF THE ELSE n'existe absolument pas au sein des ordres SQL tel que SELECT et cie !

    Seul est utilisable le CAS au sein d'une requête et il possède deux syntaxes distinctes.
    A lire : http://sqlpro.developpez.com/cours/sqlaz/select/#L7

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par SQLpro
    Désolé de te contredire le IF THE ELSE n'existe absolument pas au sein des ordres SQL tel que SELECT et cie !
    ce qui explique donc pourquoi ma premiere tentative avec if/else ne fonctionnait pas et le case oui

    Merci beaucoup pour tes précisions

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    A noter toutefois que la commande DECODE s'approche de l'idée de IF/THEN/ELSE (certes limité mais quand même ) :

    DECODE(col, val1, val2, val3) -> si la colonne col à la valeur val1 alors on retourne val2 sinon on retourn val3

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2011, 10h17
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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