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

Bases de données Delphi Discussion :

Condition en langage SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 65
    Par défaut Condition en langage SQL
    Bonjour,

    Je fait une requête qui me retourne une valeur. J'aimerais pouvoir dire que si cette valeur est plus grande que 100 elle deviene = 100.

    Avec quelque chose de ce genre la
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    If (SELECT count(*) FROM MaTable) > 100 then SELECT 100 ELSE SELECT count(*) FROM MaTable

    Le problème c'est que je ne sais pas comment faire une condition en SQL

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Quelque chose comme ça ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT
      IIF(CNT > 100, 100, CNT)
    FROM (SELECT COUNT(*) CNT FROM MA_TABLE);

    @+

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 65
    Par défaut
    Dsl mais je ne comprends pas très bien à quoi correspondent les lignes de code pourrais-tu mettre des commentaires stp

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Ce n'est pas bien compliqué pourtant !
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
      IIF(CNT > 100,  -- Condition sur le nb d'enreg: si > 100
           100,           -- Si oui, limiter le résultat à 100
           CNT)          -- Si non renvoyer le nombre exact
    FROM (
      -- Sous requête de comptage des enregistrements
      -- renvoie un champ CNT contenant le résultat du comptage
      SELECT COUNT(*) AS CNT FROM MA_TABLE);

    Ceci dit je ne vois pas trop à quoi sert cette requête.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 65
    Par défaut
    MySQL me dit "erery derived table must have its own alias"
    J'ai essayer en changeant l'alias mais sa ne change rien

  6. #6
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    le message indique l'alias de table, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT
      IIF(Compte.CNT > 100, 100, Compte.CNT)
    FROM (SELECT COUNT(*) CNT FROM MA_TABLE) AS Compte

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 65
    Par défaut
    Il me dit "FUNCTION MaBase.IIF does not exist".
    J'ai une version de PHPMyAdmin qui vient avec EasyPhp 5.3.3

  8. #8
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    c'est donc que la fonction IIF n'est implemente dans le MySql.

    Il faut des lors utiliser le CASE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      SELECT
             CASE
               WHEN Compte.Cnt > 100 THEN
                   100
               ELSE Compte.Cnt
             END
        FROM (SELECT COUNT(*) Cnt
                FROM Ma_Table) AS Compte

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 591
    Par défaut
    Bonjour,

    Il me semble quelques minutes de recherche sur Google t'auraient permis de trouver la solution.

    Avec MySql, l'instruction est IF et non IIF.

    Mais effectivement, il semble préférable d'utiliser CASE WHEN ... comme te l'indique dehorter olivier

    A+

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 65
    Par défaut
    Merci beaucoup olivier ta solution marche bien.
    Merci également aux autres qui se sont intéressé à mon problème

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

Discussions similaires

  1. Condition != en langage sql
    Par mullger dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/11/2007, 10h19
  2. condition if en sql
    Par ushiwa.sasuke dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/08/2005, 09h10
  3. Langage SQL propore à chaque SGBD
    Par Pascal Jankowski dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2004, 09h16
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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