[RESOLU]Comptage impossible ou pb avec mon "left join" ?

Comptage impossible ou pb avec mon "left join" ? [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 25-08-2007 à 02:28:12    

Bonsoir,
 
Voici mon pb :  
 
J'ai deux tables :
"COMPETENCE", qui contient IDCOMPETENCE
 
"COMPETENCE_EXERCICE" qui contient IDCOMPETENCE et IDEXERCICE
 
Ma demande de requête est simple. Je veux lister toutes les compétences de "COMPETENCE", et compter combien de fois elles ont IDEXERCICE = 1 d'associé dans la table COMPETENCE_EXERCICE.
En gros, compter le nombre d'exercice 1 pour chaque compétence....
 
Le left join me donne le nombre d'exo total par compétence. Mais je veux compter que les exos avec IDEXERCICE = 1 et pas les autres....
 
 
Vous avez une idée ?
Mon début de requête :
SELECT C.IDCOMPETENCE, count(C_EX.IDEXERCICE) AS SOMME
FROM COMPETENCE C
LEFT JOIN COMPETENCE_EXERCICE C_EX  
ON C_EX.IDCOMPETENCE = C.IDCOMPETENCE
GROUP BY IDCOMPETENCE
 
 
Y a juste le filtre sur l'IDEXERCICE à compter que j'arrive pas à placer... Merci pour votre aide. Elle me sera très précieuse :-)

Message cité 1 fois
Message édité par filo45 le 25-08-2007 à 12:07:10
Reply

Marsh Posté le 25-08-2007 à 02:28:12   

Reply

Marsh Posté le 25-08-2007 à 12:04:27    

Bon, bé, je me suis trouvé la réponse seul....
 
Voici ma requête au final :
SELECT C.IDCOMPETENCE, count(C_EX.IDEXERCICE)
FROM COMPETENCE C
LEFT JOIN (SELECT * FROM COMPETENCE_EXERCICE C_EX WHERE C_EX.IDEXERCICE = 1) AS C_EX
ON C_EX.IDCOMPETENCE = C.IDCOMPETENCE
GROUP BY C.IDCOMPETENCE
 
Et ça fait bien ce que je demande....
:-)
 

Reply

Marsh Posté le 25-08-2007 à 12:05:27    

filo45 a écrit :

Bonsoir,
 
Voici mon pb :  
 
J'ai deux tables :
"COMPETENCE", qui contient IDCOMPETENCE
 
"COMPETENCE_EXERCICE" qui contient IDCOMPETENCE et IDEXERCICE
 
Ma demande de requête est simple. Je veux lister toutes les compétences de "COMPETENCE", et compter combien de fois elles ont IDEXERCICE = 1 d'associé dans la table COMPETENCE_EXERCICE.
En gros, compter le nombre d'exercice 1 pour chaque compétence....
 
Le left join me donne le nombre d'exo total par compétence. Mais je veux compter que les exos avec IDEXERCICE = 1 et pas les autres....
 
 
Vous avez une idée ?
Mon début de requête :
SELECT C.IDCOMPETENCE, count(C_EX.IDEXERCICE) AS SOMME
FROM COMPETENCE C
LEFT JOIN COMPETENCE_EXERCICE C_EX  
ON C_EX.IDCOMPETENCE = C.IDCOMPETENCE
GROUP BY IDCOMPETENCE
 
 
Y a juste le filtre sur l'IDEXERCICE à compter que j'arrive pas à placer... Merci pour votre aide. Elle me sera très précieuse :-)


 
moi je ferais encore différemment
 
SELECT C.IDCOMPETENCE, NVL((SELECT count(*)  
                                            FROM COMPETENCE_EXERCICE C_EX
                                            WHERE C_EX.IDCOMPETENCE =  C.IDCOMPETENCE
                                            AND C_EX.IDEXERCICE = 1),0)
FROM COMPETENCE C
 
 
PS: NVL est une fonction ORACLE. A remplacer pour l'SGBD que tu utilises
Oracle: NVL
SqlServer: IsNull
MySql: ?
...

Reply

Marsh Posté le 25-08-2007 à 22:36:11    

IFNULL avec MySQL :o
(mais je suis pas sur qu'il gère ce genre de syntaxe)


Message édité par mrbebert le 25-08-2007 à 22:37:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed