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