[Oracle 9i] GROUP BY avec jointure.
Bonjour,
Je veux récupérer le nombre de téléchargements par utilisateur et par année.
Pour cela j'ai 2 tables:
- LOG, ou sont loger certaines actions utilisateurs. Les colonnes sont:
- LOG_UTL_ID : NUMBER // Identifiant de l'utilisateur
- LOG_EVENT_ID : NUMBER // Code de l'évéènement. Pour un téléchagement c'est 41.
- LOG_DATE: DATE // Date de l'évènement.
- UTILISATEUR, contenant les infos sur les utilisateurs ...
- UTL_ID : NUMBER
- UTL_NOM : VARCHAR2
- UTL_PRENOM : VARCHAR2
- ...
J'ai une première requete qui marche :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
SELECT
LOG.LOG_UTL_ID AS userId,
EXTRACT(YEAR FROM LOG.LOG_DATE) AS year,
COUNT(*) AS count
FROM LOG
WHERE LOG.LOG_EVENT_ID = 41
GROUP BY
LOG.LOG_UTL_ID, EXTRACT(YEAR FROM LOG.LOG_DATE)
ORDER BY
LOG.LOG_UTL_ID, EXTRACT(YEAR FROM LOG.LOG_DATE); |
Mes problèmes se posent lorsque je veux faire apparaitre d'autres informations sur les utilisateurs : nom, prénom, etc ...
Si je fais :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
SELECT
UTILISATEUR.UTL_NOM AS userSurename,
UTILISATEUR.UTL_PRENOM AS userForename,
LOG.LOG_UTL_ID AS userId,
EXTRACT(YEAR FROM LOG.LOG_DATE) AS year,
COUNT(*) AS count
FROM LOG
INNER JOIN UTILISATEUR
ON UTILISATEUR.UTL_ID = LOG.LOG_UTL_ID
WHERE LOG.LOG_EVENT_ID = 41
GROUP BY
LOG.LOG_UTL_ID, EXTRACT(YEAR FROM LOG.LOG_DATE)
ORDER BY
LOG.LOG_UTL_ID, EXTRACT(YEAR FROM LOG.LOG_DATE); |
J'ai l'erreur suivant: "ORA-00979 N'est pas une expression GROUP BY"
De même en faisant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SELECT
UTILISATEUR.UTL_NOM AS userSurename,
UTILISATEUR.UTL_PRENOM AS userForename,
LOG.LOG_UTL_ID AS userId,
EXTRACT(YEAR FROM LOG.LOG_DATE) AS year,
COUNT(*) AS count
FROM LOG, UTILISATEUR
WHERE LOG.LOG_EVENT_ID = 41
AND UTILISATEUR.UTL_ID = LOG.LOG_UTL_ID
GROUP BY
LOG.LOG_UTL_ID, EXTRACT(YEAR FROM LOG.LOG_DATE)
ORDER BY
LOG.LOG_UTL_ID, EXTRACT(YEAR FROM LOG.LOG_DATE); |
Vous avez peut être la solution ?