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 count() = 0


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut Afficher count() = 0
    Bonjour,
    Je travaille avec isqlplus et je souhaiterai afficher les lignes qui retournent 0 quand je fais un count.
    Avez-vous une solution ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a
    GROUP BY a.ref_comp.comp;
    => Affiche les lignes /= 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a
    GROUP BY a.ref_comp.comp;
    UNION
    SELECT a.ref_comp.comp, 0 FROM Avion a
    GROUP BY a.ref_comp.comp;
    => Affiche les lignes /=0 puis
    SP2-0850: Command "UNION" is not available in iSQL*Plus
    Puis les lignes précédentes avec les valeurs 0 au lieu de leur valeur réelle

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    il faut mettre le GROUP BY que dans la 2eme requête il me semble

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a;
    UNION
    SELECT a.ref_comp.comp, 0 FROM Avion a
    GROUP BY a.ref_comp.comp;
    Ca me mets:
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a
    *

    ERROR at line 1:
    ORA-00937: not a single-group group function
    SP2-0850: Command "UNION" is not available in iSQL*Plus

    Et ça m'affiche les lignes qui sont normalement /= 0 avec des 0 ...

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par Tipha Voir le message
    Bonjour,
    Je travaille avec isqlplus et je souhaiterai afficher les lignes qui retournent 0 quand je fais un count.
    Avez-vous une solution ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a
    GROUP BY a.ref_comp.comp;
    => Affiche les lignes /= 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a
    GROUP BY a.ref_comp.comp;
    UNION
    SELECT a.ref_comp.comp, 0 FROM Avion a
    GROUP BY a.ref_comp.comp;
    => Affiche les lignes /=0 puis

    Puis les lignes précédentes avec les valeurs 0 au lieu de leur valeur réelle


    il y a ici ";" de trop

    GROUP BY a.ref_comp.comp;
    UNION
    SELECT a.ref_comp.comp, 0 FROM Avion a
    GROUP BY a.ref_comp.comp;[/CODE]

    sinon

    si tu fais

    SELECT COUNT(*) FROM Avion a
    where a.ref_comp.comp
    is null ;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Malheurseusement avec la correction et ce que tu proposes, cela ne marche pas. Par contre, j'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT a.ref_comp.comp, COUNT(*) FROM Avion a
    GROUP BY a.ref_comp.comp;
    UNION
    SELECT a.ref_comp.comp FROM Avion a
    WHERE (SELECT COUNT(*) FROM Avion a
    GROUP BY a.ref_comp.comp) = 0;
    Et ça me renvoit:
    WHERE (SELECT COUNT(*) FROM Avion a
    *

    ERROR at line 2:
    ORA-01427: single-row subquery returns more than one row

    En effet, je dois avoir 2 lignes qui retourne 0. Est-ce que la solution se rapproche ?

  6. #6
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    et ca


    SELECT COUNT(*) DECODE(a.ref_comp.comp,null,'Null',a.ref_comp.comp) REF FROM Avion a
    group by a.ref_comp.comp
    order by 1 desc ;

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Alors, non plus ..
    J'ai ça:
    SELECT COUNT(*) DECODE(a.ref_comp.comp,null,'Null',a.ref_comp.comp) REF FROM Avion a

    ERROR at line 1:
    ORA-00923: FROM keyword not found where expected

    L'étoile de l'erreur se trouve sous la parenthèse : DECODE(

    Je suis désolée, en plus, là, je ne comprends pas tout ..

  8. #8
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    il y a une virgule oubliée

    SELECT COUNT(*) ,DECODE(a.ref_comp.comp,null,'Null',a.ref_comp.comp) REF FROM Avion a
    group by a.ref_comp.comp
    order by 1 desc ;

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Hum ..
    Ca me mets que les lignes /= 0.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Bon en tout cas merci, quand j'aurai la solution , je viendrais la poster.
    Bonne soirée.

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Je pense que vous avez mal exposé votre problème, qui est à mon avis de voir tous les "ref_comp.comp" (ça fonctionne cette syntaxe ?) même aucun avion ne possède cette référence.

    Pouvez-vous notre donner un petit jeu de test de ce que vous avez et de ce que vous voudriez voir ?

  12. #12
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Ton problème, c'est que tu ne peux pas avoir count(*) = 0 : parce que ça veut dire qu'il n'y a aucune ligne dans ta table correspondant à ces refs...

    => Qu'est ce que tu veux exactement ?

    Je suppose que tes "comp" sont répertoriés dans une autre table.

    Dans ce cas, il faut que tu fasses la jointure externe avec cette table + count(*)

    [EDIT]
    En voyant le poste de Waldar, je m'aperçois qu'on s'approche de la chose...
    "ref_comp" ne serait pas par hasard le nom de la table "maître" où se trouvent les références ?
    Dans ce cas, jointure externe entre ref_comp et avion, puis count(*)...

  13. #13
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Tout-à-fait pacmann, je pense même que le code suivant devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT r.comp, COUNT(*)
    FROM ref_comp r LEFT OUTER JOIN Avion a ON a.comp = r.comp
    GROUP BY r.comp;

Discussions similaires

  1. afficher le résultat d'un count
    Par jan0 dans le forum SQL
    Réponses: 3
    Dernier message: 20/10/2006, 10h01
  2. COUNT() elle compte mais n affiche pas
    Par tyberium dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/09/2006, 23h09
  3. Afficher le résultat d'un COUNT même null
    Par Invité dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/11/2005, 18h07
  4. [MySQL] Requete count et l'afficher
    Par tyarak dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/11/2005, 21h57
  5. Afficher les enregistrements si le count() vaut 0
    Par j14z dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/04/2004, 09h51

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