Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1162 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Problème avec un COUNT()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Problème avec un COUNT()

n°676680
Gurney_Hal​leck
dévisage des figures
Posté le 17-03-2004 à 23:35:40  profilanswer
 

Salut à tous,
 
voilà, j'ai une table avec 4 champs :
id_action
id_objet
id_effet
id_ressource
 
J'aimerais compter le nombre d'id_effet non nuls (cad id_effet!=0) pour chaque id_objet
 
J'ai donc fait la requète suivante :
 

Code :
  1. SELECT o.id, o.objet, COUNT( rel.id_effet ) as nb
  2. FROM relations rel, objets o
  3. WHERE o.id = rel.id_objet AND rel.id_effet <>0
  4. GROUP  BY o.id,o.objet


 
la table objets contient juste le nom de l'objet et son id, donc o.id=rel.id_objet
 
Or, cette requête ne me donne un résultat que si COUNT(id_effet)!=0  
mais j'aimerais également qu'il me sorte les résultats si COUNT(id_effet)==0
 
Exemple : j'ai 216 enregistrements d'objet, et avec ma requête, il ne m'en ressort que 146, or j'aimerais qu'il m'affiche les 70 manquants avec la colonne nb égale à 0
 
Quelqu'un aurait il une petite idée ?
Merci d'avance !

mood
Publicité
Posté le 17-03-2004 à 23:35:40  profilanswer
 

n°676702
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 00:16:21  profilanswer
 

Si je peux me permettre de rajouter une petite condition, il faudrait idéalement que les id_effet ne soient comptabilisés qu'une fois ;)
 
Si quelqu'un voit la solution...

n°676756
thecoin
Chasseur de chasseur de canard
Posté le 18-03-2004 à 07:16:53  profilanswer
 

null n'est pas 0 :non:  
donc:
rel.id_effet is not null

n°677003
ratibus
Posté le 18-03-2004 à 12:27:55  profilanswer
 

Code :
  1. SELECT o.id, o.objet, COUNT( rel.id_effet ) as nb
  2. FROM objets o LEFT JOIN relations rel ON o.id = rel.id_objet
  3. WHERE rel.id_effet IS NULL OR rel.id_effet>0
  4. GROUP  BY o.id,o.objet


Message édité par ratibus le 18-03-2004 à 12:30:06
n°677009
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 12:31:59  profilanswer
 

ratibus a écrit :

Code :
  1. SELECT o.id, o.objet, COUNT( rel.id_effet ) as nb
  2. FROM objets o LEFT JOIN relations rel ON o.id = rel.id_objet
  3. WHERE rel.id_effet <>0
  4. GROUP  BY o.id,o.objet




 
salut,
Malheureusement ça marche pas non plus, ça me fait exactement la même chose.
En fait, je pense qu'une jointure entre objets et relations est inutile, puisque il n'y a pas de relation spécifique entre ces deux tables.
 
Peut être une jointure de la table relations sur elle même ?

n°677010
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 12:33:28  profilanswer
 

thecoin a écrit :

null n'est pas 0 :non:  
donc:
rel.id_effet is not null


 
non non, justement, je n'ai pas de null dans cette colonne.
 
J'ai bien des 0, que je voudrais écarter

n°677014
ratibus
Posté le 18-03-2004 à 12:35:59  profilanswer
 

Gurney_Halleck a écrit :


 
salut,
Malheureusement ça marche pas non plus, ça me fait exactement la même chose.
En fait, je pense qu'une jointure entre objets et relations est inutile, puisque il n'y a pas de relation spécifique entre ces deux tables.
 
Peut être une jointure de la table relations sur elle même ?


Tu as une jointure entre ces 2 tables qd tu fais WHERE o.id = rel.id_objet
 
J'ai édité mon code : t'as essayé ma nouvelle requête ?

n°677017
vttman2
Je suis Open ...
Posté le 18-03-2004 à 12:39:18  profilanswer
 

Tu peux essayer ça déjà ...
 
SELECT o.id, o.objet, COUNT( rel.id_effet ) as nb  
FROM  objets o left join relations rel  
      on o.id = rel.id_objet  
GROUP  BY o.id,o.objet

n°677028
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 12:45:47  profilanswer
 

ratibus a écrit :


Tu as une jointure entre ces 2 tables qd tu fais WHERE o.id = rel.id_objet
 
J'ai édité mon code : t'as essayé ma nouvelle requête ?


 
ouip, j'ai essayé, mais ça me retourne exactement la même chose.
 
Je reprécise : je voudrais que le COUNT ne prenne en compte que les id_effet dont la valeur n'est pas égale à 0

n°677031
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 12:47:19  profilanswer
 

vttman2 a écrit :

Tu peux essayer ça déjà ...
 
SELECT o.id, o.objet, COUNT( rel.id_effet ) as nb  
FROM  objets o left join relations rel  
      on o.id = rel.id_objet  
GROUP  BY o.id,o.objet
 


 
oui, ça ça marche, mais dans ce cas, nb=1 même quand id_effet=0
 
je voudrais que ça me retourne nb=0 quand il n'y a que des id_effet=0

mood
Publicité
Posté le 18-03-2004 à 12:47:19  profilanswer
 

n°677032
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 12:48:29  profilanswer
 

en meême temps, je sais pas si ce que je veux est possible à faire ;)

n°677044
ratibus
Posté le 18-03-2004 à 13:00:43  profilanswer
 

encore un essai :D :

Code :
  1. SELECT o.id, o.objet, COUNT( rel.id_effet ) as nb 
  2. FROM objets o LEFT JOIN relations rel ON o.id = rel.id_objet AND rel.id_effet>0 
  3. GROUP  BY o.id,o.objet


Message édité par ratibus le 18-03-2004 à 13:01:57
n°677046
Gurney_Hal​leck
dévisage des figures
Posté le 18-03-2004 à 13:07:43  profilanswer
 

:love:
 
MERCI !
Donc faut le mettre dans le ON !
Merci bcp ! Je rajoute mon DISTINCT dans COUNT et j'ai exactement ce que je veux :hello:
 
Merci encore, à tous, pour votre aide !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Problème avec un COUNT()

 

Sujets relatifs
SQL expert MAJ cle primaire et impact sur bdd (HELP!) urgentprobleme avec les variables de session
Problème avec les 'keys' d'un map de la STLprobleme avec le nom des checkbox....
Sécurité pour accès à une Base de Données SQL ! Need Help[Perl] probleme avec sub - subroutine [résolu -> howto inside]
SQL Quote Java[import] encore 1 problème d'import ...
probleme avec les packages.SQL, problème lors du count
Plus de sujets relatifs à : [SQL] Problème avec un COUNT()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR