Comment faire ma requête

tyffanie.r - Modifié le 2 mai 2022 à 10:52
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 2 mai 2022 à 12:38
Salut tout le monde.

J'ai trois tables SQL.
- participantscauserie:
IdCauserie IdPersonnel

- causeries:
Id Causerie Agence Date IdAnimateur Themes

- personnels
IdPersonnel Nom Prenom Fonction Agence Type


Je voudrais avoir une requête permettant d'avoir le nombre de personnel dont le type est 'chantier' ayany vu AU MOINS X causeries. J'ai essayé un bon nombre de requête sans succès, je n'ai plus d'inspi.

Mon dernier essai est :
SELECT COUNT(IdPersonnel) AS nombre
FROM `participantscauserie` JOIN `personnels`
WHERE participantscauserie.IdPersonnel = personnels.Id_Personnel AND UPPER(`type`) = 'CHANTIER'
HAVING SUM(nombre) >=2;

Merci d'avance,

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2022 à 12:38
Tu précises que ton dernier essai était un requête, mais quel résultat tu as obtenu et quel était le résultat désiré.
Tu ne précises pas non plus le SGBDR utilisé.

Il me semble qu'un requête de ce type pourrait fonctionner.
SELECT COUNT (*) AS NbPersonnel FROM (SELECT personnels.Id_Personnel
FROM `participantscauserie` JOIN `personnels` ON participantscauserie.IdPersonnel = personnels.Id_Personnel
WHERE UPPER(`type`) = 'CHANTIER'
HAVING SUM(nombre) >=2)


Surtout, un INNER JOIN, il vaut mieux mettre la clause ON pour faire le lien, c’est largement plus efficace que de mettre la condition dans la clause WHERE.
0
Rejoignez-nous