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

SQL Oracle Discussion :

Afficher un zéro au lieu d'un vide (COUNT)


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Afficher un zéro au lieu d'un vide (COUNT)
    Bonjour,

    J'ai une table (T) qui contient plusieurs champs

    CODE       TYPE            GENRE 
    1              X                 .
    1              X                 .

    La requête : SELECT (COUNT TYPE),CODE FROM T WHERE TYPE =Y me retourne

    COUNT TYPE
    0
    Jusque là tout va bien.
    Mais la requête : SELECT (COUNT TYPE),CODE FROM T WHERE TYPE =Y me retourne

    COUNT TYPE       CODE
    Les deux champs sont vides, alors que je désire avoir le résultat suivant :

    COUNT TYPE       CODE
          0                    1
    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Ce qui est déjà étonnant, c'est que les requêtes que tu nous présentes donnent un résultat !
    Oracle ne devrait répondre à cela que par des erreurs de syntaxe
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    C'est normal, j'ai écrit les commandes vite fait
    C'est pour le contexte c'est tout.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    dans ce cas prenez votre temps et donnez les deux requetes que vous exécutez.

    La dans votre exemple les deux requêtes sont identique et syntaxiquement fausse.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT (TYPE) FROM T WHERE TYPE= 'Y'
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT (TYPE),CODE FROM T WHERE TYPE='Y' GROUP BY CODE

    LE résultat que je cherche est :

    COUNT TYPE CODE
    0 1


    Merci

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    La seconde requête ne devrait pas s'exécuter sans erreur de syntaxe.
    Il y manque une clause GROUP BY.

    Merci de bien vouloir poster les requêtes qui s'exécutent réellement.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    C'est bon c'est réglé, je l'avais oublié
    Je m'excuse

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    un modèle à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select col_groupement, SUM(CASE WHEN ma_cond = 'X' THEN 1 END) as sum_condition
    from ma_table
    group by col_groupement

  9. #9
    Membre averti
    Avatar de diablo-dz
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 327
    Points
    327
    Par défaut
    Bonsoir
    j'ai améliorer la requête de punkoff
    voici la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT code , count (CASE WHEN isnull(type,0) = 'y' THEN 1 END) AS Counte 
    FROM T
    GROUP BY code


    Si ça marche n'oublie pas de mettre la discussion résolu

    J’espère qu'elle réponde a ta demande
    A+
    Si une réponse vous a permis d'avancer , n'oublie pas de mettre
    Ne pas oublier

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    La requête de punkoff m'a donnée que 50 % de la solution
    la colonne code m'a donné le résultat mais pas le SUM c'est toujours vide.

    la requête de diablo-dz ne marche pas elle me retourne une erreur.

  11. #11
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    La fonction ISNULL() n'appartient ni au langage SQL normalisé ni au dialecte Oracle. Son équivalent serait COALESCE() ou NVL().
    De plus, la requête de diablo-dz n'apporte rien de plus à la résolution de ton problème que celle proposée par punkoff, sinon ajouter une redondance inutile.
    La requête de punkoff pourrait être complétée ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT col_groupement, SUM(CASE WHEN ma_cond = 'X' THEN 1 ELSE 0 END) AS sum_condition
    FROM ma_table
    GROUP BY col_groupement
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci
    ça marche très bien.

  13. #13
    Membre averti
    Avatar de diablo-dz
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Points : 327
    Points
    327
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    La fonction ISNULL() n'appartient ni au langage SQL normalisé ni au dialecte Oracle. Son équivalent serait COALESCE() ou NVL().
    De plus, la requête de diablo-dz n'apporte rien de plus à la résolution de ton problème que celle proposée par punkoff, sinon ajouter une redondance inutile.
    voir exemple 28 http://sqlpro.developpez.com/cours/sqlaz/select/#L5
    Si une réponse vous a permis d'avancer , n'oublie pas de mettre
    Ne pas oublier

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2013, 10h12
  2. debutant : affiche liste nom au lieu de liste Id
    Par energies dans le forum Access
    Réponses: 10
    Dernier message: 15/09/2006, 12h34
  3. debutant : affiche liste nom au lieu de liste Id
    Par regis94 dans le forum Access
    Réponses: 6
    Dernier message: 17/08/2006, 13h49
  4. Réponses: 4
    Dernier message: 12/05/2006, 19h48
  5. Réponses: 3
    Dernier message: 16/12/2005, 11h13

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