[RESOLU] Sélectionner des données et compter le nombre de récurrence dans une autre table

Eléphanteau du PHP | 44 Messages

24 mars 2021, 14:47

Bonjour !

J'ai 3 tables dans ma base de données:

Image
Image
Image

Et j'ai cette requête SQL:

Code : Tout sélectionner

SELECT qa.Thematique, cqa.Name FROM QuestionsAudit qa LEFT JOIN CategoriesQuestionsAudit cqa ON qa.Category = cqa.ID ORDER BY qa.ID, qa.Category ASC

Qui me retourne ce résultat:

Image

Maintenant, ce que je veux, c'est ajouter une colonne dans mon résultat qui contiendra le nombre de fois que la colonne "ID" de la table 1 (QuestionsAudit) apparaît dans la colonne "Thematique" de la table 3 (ConstatsAudits) en tant que "Recurrence" ( avec le nombre de récurrence qui est égale à 0 si il n'y a aucunes récurrences). Donc j'aimerais obtenir quelque chose qui ressemble à ça en une seule requête:

Image

Est-ce que c'est possible ? Et si oui comment ?

Avatar du membre
Mammouth du PHP | 1564 Messages

25 mars 2021, 00:43

essaye ça:
SELECT qa.Thematique, cqa.Name, (SELECT COUNT id.QuestionsAudit as Recurrence WHERE id.ConstatsAudits = id.QuestionsAudit) FROM QuestionsAudit qa
LEFT JOIN CategoriesQuestionsAudit cqa ON qa.Category = cqa.ID
ORDER BY qa.ID, qa.Category ASC

Eléphanteau du PHP | 44 Messages

25 mars 2021, 02:09

Salut !

J'ai détecté plusieurs problèmes dans ta requête avant même de l'essayer sur ma database:

- Tu as oublier de mettre ton count entre parenthèse.
- L'alias de ton count n'es pas formaté en string.
- Tu ne dis pas à ton count dans quel table il doit chercher donc je suis sur qu'il ne fonctionnera pas.

Du coup j'ai essayer cette version que j'ai obtenu à partir des corrections que j'ai effectué sur ta requête:

Code : Tout sélectionner

SELECT qa.Thematique, cqa.Name, (SELECT COUNT(ID) FROM ConstatsAudits ca WHERE ca.Thematique = qa.ID) AS Recurrence FROM QuestionsAudit qa LEFT JOIN CategoriesQuestionsAudit cqa ON qa.Category = cqa.ID ORDER BY qa.ID, qa.Category ASC;

Qui me retourne bien un tableau avec en 3ème colonne le nombre total de ligne où l'ID de mes questions apparaissent.
Il ne me reste plus qu'à ajouter une clause AND dans ma clause WHERE si je veux compter des lignes qui possède un type de données précise. (Par exemple si ma colonne Constat dans ma table ConstatsAudits est égale à "NC" ou "NA").
J'ai fais des tests et ça a l'air de fonctionner.

Ce qui répond à la question de base de mon sujet qui était de compter le nombre de récurrences totale dans la table ConstatsAudits.
Modifié en dernier par Stevenhonor le 25 mars 2021, 02:48, modifié 1 fois.

Avatar du membre
Mammouth du PHP | 1564 Messages

25 mars 2021, 02:14

Désolé c'est encore un peu flou pour moi les jonctions mais j'étais pas loin :D

Eléphanteau du PHP | 44 Messages

25 mars 2021, 02:47

Désolé c'est encore un peu flou pour moi les jonctions mais j'étais pas loin :D
Bon apparemment mettre un alias sans l'échapper en string ne compte pas comme une erreur je viens de tester, donc je m'excuse pas rapport à ce que j'ai dit à ce propos: j'avais tort sur ce point. #-o

Avatar du membre
Mammouth du PHP | 1564 Messages

25 mars 2021, 03:15

Ça m'étonnais mais ça aurait pu être vrai du à une version différente de mysql, peut être.