J'ai trois tables CLASSES
, CHILD_CLASSES
et STUDENTS
.requête MYSQL INNER JOIN deux table
CLASSES
ressemble à ceci (son référencement auto):
CLASS_ID | CLASS_PARENT |
-------------------------
1 | ---
2 | 1
3 | 2
CHILD_CLASSES
ressemble à ceci:
CC_ID | PARENT_CLASS_ID | CHILD_CLASS_ID
----------------------------------------
1 | 1 | 2
2 | 1 | 3
3 | 2 | 3
STUDENTS
ressemble à ceci
STU_ID | CLASS_ID | STU_NAME
----------------------------
1 | 1 | A
2 | 1 | B
3 | 2 | C
Fondamentalement, la table CLASSES
est auto référencement, mais chaque classe peut également avoir des enfants associés à cette classe. Donc CLASSE 1 a les enfants 2 et 3 et la classe 2 a des enfants de seulement 3.
Ainsi, beaucoup d'élèves peuvent avoir le même ID de classe. Les étudiants sont également autorisés à voir toutes les informations qui sont un enfant du class_id qui leur est associé afin que tout étudiant ayant un ID de classe 1 puisse voir les classes 1, 2 et 3, mais qu'un étudiant ayant une idée de classe ne puisse voir que des classes avec ID 2 et 3. J'essaie de trouver une requête pour compter le nombre d'utilisateurs d'une classe particulière qui ont accès. donc si je regardais class_id de 1, la requête retournerait 3 parce qu'elle a deux enfants dans la table CHILD_CLASSES et ensuite elle-même dans la table des classes. Je ne peux pas sembler faire fonctionner ceci cependant, je viens toujours court parce qu'en essayant de compter le 1 utilisateur dans la table de CLASSES.
la requête J'utilise à ce jour est ce
SELECT COUNT(class_id) as TOTAL
FROM students
WHERE class_id IN (SELECT class_id
FROM child_classes
WHERE parent_class_id = 1);
Pourriez-vous publier la requête que vous utilisez? – EFraim
donc ma requête renverra seulement 2 parce qu'elle trouve seulement les deux classes dans la table CHILD_CLASSES où le class_id est le même. J'ai besoin d'ajouter en quelque sorte au total le résultat des classes SELECT COUNT (class_id) FROM où class_id = 1; – medium
SI vous utilisiez Pg, vous pouviez faire une requête récursive où les classes pouvaient être au niveau N. Ce serait aussi plus rapide. –