Comptage impossible ou pb avec mon "left join" ? [RESOLU] - SQL/NoSQL - Programmation
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.... 
:-) 
 
Marsh Posté le 25-08-2007 à 12:05:27
| filo45 a écrit : Bonsoir,  | 
 
 
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: ? 
...
Marsh Posté le 25-08-2007 à 22:36:11
IFNULL avec MySQL  
 
(mais je suis pas sur qu'il gère ce genre de syntaxe)
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 édité par filo45 le 25-08-2007 à 12:07:10