Requête paramétrée sur une table avec une jointure sur cette même table
Fermé
Ferbak
Messages postés
6
Date d'inscription
vendredi 12 octobre 2012
Statut
Membre
Dernière intervention
18 décembre 2018
-
14 déc. 2018 à 18:21
yg_be Messages postés 23440 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 janvier 2025 - 19 déc. 2018 à 16:58
yg_be Messages postés 23440 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 janvier 2025 - 19 déc. 2018 à 16:58
A voir également:
- Requête paramétrée sur une table avec une jointure sur cette même table
- Table ascii - Guide
- Table des matières word - Guide
- Table des annexes word ✓ - Forum Word
- Table des matières et table des annexes - Forum Word
- Table des matières avec annexes numérotées A1, A2 - Forum Word
2 réponses
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
Ambassadeur
1 560
Modifié le 14 déc. 2018 à 18:35
Modifié le 14 déc. 2018 à 18:35
bonjour, peux-tu partager tes deux requêtes: celle à laquelle tu voudrais ajouter une colonne, et celle que tu utilises, qui te donne le bon résultat, et que tu souhaites optimiser?
Ferbak
Messages postés
6
Date d'inscription
vendredi 12 octobre 2012
Statut
Membre
Dernière intervention
18 décembre 2018
14 déc. 2018 à 21:23
14 déc. 2018 à 21:23
Bonsoir,
Merci pour ta réponse.
Voici donc ma première requête, un peu plus complète que mon exemple simplifié :
SELECT
Personnel.ID_Personnel AS ID_Personnel,
Personnel.Nom AS Nom,
NN_Prest_Perso.FK_Personnel AS FK_Personnel,
Prestations.ID_Prestations AS ID_Prestations,
Prestations.Dateprest AS Dateprest,
Programmation.ID_Programmation AS ID_Programmation,
Sites.ID_Sites AS ID_Sites,
Clients.ID_Clients AS ID_Clients
FROM
Personnel,
NN_Prest_Perso,
Prestations,
Programmation,
Sites,
Clients
WHERE
Clients.ID_Clients = Sites.FK_Clients
AND Sites.ID_Sites = Programmation.FK_Sites
AND Programmation.ID_Programmation = Prestations.FK_Programmation
AND Prestations.ID_Prestations = NN_Prest_Perso.FK_Prestations
AND Personnel.ID_Personnel = NN_Prest_Perso.FK_Personnel
AND
(
NN_Prest_Perso.FK_Personnel = {Param_FK_Personnel}
AND Prestations.Dateprest BETWEEN {Param_Dateprest_deb} AND {Param_Dateprest_fin}
)
Et ma seconde requête, dans l'exemple elle porte sur l'ensemble des Prestations, mais je voudrais qu'elle ne porte que sur les Prestations trouvées dans ma première requête.
SELECT
Prestations.ID_Prestations AS ID_Prestations,
COUNT(NN_Prest_Perso.FK_Prestations) AS Comptage
FROM
Prestations,
NN_Prest_Perso
WHERE
Prestations.ID_Prestations = NN_Prest_Perso.FK_Prestations
GROUP BY
Prestations.ID_Prestations
Merci :)
Ferbak
Merci pour ta réponse.
Voici donc ma première requête, un peu plus complète que mon exemple simplifié :
SELECT
Personnel.ID_Personnel AS ID_Personnel,
Personnel.Nom AS Nom,
NN_Prest_Perso.FK_Personnel AS FK_Personnel,
Prestations.ID_Prestations AS ID_Prestations,
Prestations.Dateprest AS Dateprest,
Programmation.ID_Programmation AS ID_Programmation,
Sites.ID_Sites AS ID_Sites,
Clients.ID_Clients AS ID_Clients
FROM
Personnel,
NN_Prest_Perso,
Prestations,
Programmation,
Sites,
Clients
WHERE
Clients.ID_Clients = Sites.FK_Clients
AND Sites.ID_Sites = Programmation.FK_Sites
AND Programmation.ID_Programmation = Prestations.FK_Programmation
AND Prestations.ID_Prestations = NN_Prest_Perso.FK_Prestations
AND Personnel.ID_Personnel = NN_Prest_Perso.FK_Personnel
AND
(
NN_Prest_Perso.FK_Personnel = {Param_FK_Personnel}
AND Prestations.Dateprest BETWEEN {Param_Dateprest_deb} AND {Param_Dateprest_fin}
)
Et ma seconde requête, dans l'exemple elle porte sur l'ensemble des Prestations, mais je voudrais qu'elle ne porte que sur les Prestations trouvées dans ma première requête.
SELECT
Prestations.ID_Prestations AS ID_Prestations,
COUNT(NN_Prest_Perso.FK_Prestations) AS Comptage
FROM
Prestations,
NN_Prest_Perso
WHERE
Prestations.ID_Prestations = NN_Prest_Perso.FK_Prestations
GROUP BY
Prestations.ID_Prestations
Merci :)
Ferbak
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
1 560
Modifié le 15 déc. 2018 à 11:13
Modifié le 15 déc. 2018 à 11:13
Tu avais écrit "Je parviens à mon résultat, mais avec une méthode vraiment pas optimale je pense", et je ne vois pas comment tu y parviens.
Suggestion:
Suggestion:
SELECT Personnel.ID_Personnel AS ID_Personnel, Personnel.Nom AS Nom, NN1.FK_Personnel AS FK_Personnel, Prestations.ID_Prestations AS ID_Prestations, Prestations.Dateprest AS Dateprest, Programmation.ID_Programmation AS ID_Programmation, Sites.ID_Sites AS ID_Sites, Clients.ID_Clients AS ID_Clients , COUNT(NN2.FK_Prestations) AS Comptage FROM Personnel, NN_Prest_Perso AS NN1, Prestations, Programmation, Sites, Clients , NN_Prest_Perso as NN2 WHERE Clients.ID_Clients = Sites.FK_Clients AND Sites.ID_Sites = Programmation.FK_Sites AND Programmation.ID_Programmation = Prestations.FK_Programmation AND Prestations.ID_Prestations = NN1.FK_Prestations AND Personnel.ID_Personnel = NN1.FK_Personnel AND ( NN1.FK_Personnel = {Param_FK_Personnel} AND Prestations.Dateprest BETWEEN {Param_Dateprest_deb} AND {Param_Dateprest_fin} ) AND Prestations.ID_Prestations = NN2.FK_Prestations GROUP BY Personnel.ID_Personnel , Personnel.Nom , NN1.FK_Personnel , Prestations.ID_Prestations , Prestations.Dateprest , Programmation.ID_Programmation , Sites.ID_Sites , Clients.ID_Clients
Ferbak
Messages postés
6
Date d'inscription
vendredi 12 octobre 2012
Statut
Membre
Dernière intervention
18 décembre 2018
18 déc. 2018 à 23:55
18 déc. 2018 à 23:55
Bonsoir à toi,
De fait, je n'avais pas posté ma requête, elle impliquait plusieurs requêtes en cascade et je savais qu'elle ne servirait pas à grand chose puisque la solution finale n'aurait rien à voir.
Et de fait, ta solution répond parfaitement à ce que j'attendais, un tout tout grand merci! :)
Bonne soirée,
Ferbak
De fait, je n'avais pas posté ma requête, elle impliquait plusieurs requêtes en cascade et je savais qu'elle ne servirait pas à grand chose puisque la solution finale n'aurait rien à voir.
Et de fait, ta solution répond parfaitement à ce que j'attendais, un tout tout grand merci! :)
Bonne soirée,
Ferbak
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
1 560
>
Ferbak
Messages postés
6
Date d'inscription
vendredi 12 octobre 2012
Statut
Membre
Dernière intervention
18 décembre 2018
19 déc. 2018 à 16:58
19 déc. 2018 à 16:58
peux-tu alors marquer le sujet comme résolu, via la roue dentée à droite du titre?