Bonjour,
J'ai plusieurs tables:
- Cours: id, id_modules, nom
- Exercices: id, id_modules, nom
- Modules: id, nom
- Users2mocules: id_modules, user_id
- Users2cours: user_id, cours_id, actif (0 ou 1 si actif ou non)
- Users2exercices: user_id, exercice_id, actif (0 ou 1 si actif ou non)
- Users: id, nom
Je cherche à obtenir en une seule requête, un résultat du type suivant pour un id de user donné:
id_module - nom_module - nbCours - NbExercices
Avec "nbCours" et "nbExercices", le nombre de cours et d'exercices accessibles à la personne, et qui sont actifs.
J'arrive à obtenir un résultat pour seulement soit les cours, soit les exercices mais pas les 2...
Code :
- SELECT
- m.id,
- m.nom,
- COUNT(*) AS nbCours
- FROM
- cours c
- INNER JOIN
- users2modules u2m
- ON u2m.id_modules = c.id_modules
- AND u2m.id_user = 75
- AND u2m.actif = 1
- INNER JOIN
- users2cours u2c
- ON u2c.id_user = u2m.id_user
- AND u2c.actif = 1
- INNER JOIN
- modules m
- ON m.id = c.id_modules
- WHERE
- u2c.id_cours = c.id
- GROUP BY m.nom
|
Ce que je tente pour avec le nombre d'exercices en plus, et qui donc ne fonctionne pas:
Code :
- SELECT
- m.id,
- m.nom,
- COUNT(c.id) AS nbCours,
- COUNT(e.id) AS nbExercices
- FROM
- cours c,
- exercices e
- INNER JOIN
- users2modules u2m
- ON u2m.id_modules = c.id_modules
- AND u2m.id_user = 75
- AND u2m.actif = 1
- INNER JOIN
- users2cours u2c
- ON u2c.id_user = u2m.id_user
- AND u2c.actif = 1
- INNER JOIN
- users2exercices u2e
- ON u2e.id_user = u2m.id_user
- AND u2e.actif = 1
- INNER JOIN
- modules m
- ON m.id = c.id_modules
- WHERE
- u2c.id_cours = c.id
- GROUP BY m.nom
|
J'obtiens comme erreur que "c.ud_modules" n'existe pas.
Par avance, merci pour votre aide!