Requête pour compter sur 3 tables

Petit nouveau ! | 8 Messages

18 oct. 2011, 10:33

Bonjour,
Je dois réaliser une requête sur ces 3 tables :

participants(num_participant,nom, prenom, ...)
inscriptions(num_inscription, num_participant, num_activite, presence,...)
activites(num_activite, designation, type, date,...)

on me demande de réaliser un hit-parade des participants présents (inscriptions.presence) et leurs inscriptions par type d'activité.

activites.type peut avoir 3 valeurs : Atelier, séminaire ou colloque

exemple:

Pierre Untel 26 inscriptions
Gérard Menfroid 25 inscriptions
Emile Pattes 18 inscriptions

et ainsi de suite.

Avez-vous une idée de début de requête ?

Je vous remercie +++

NP

Eléphant du PHP | 190 Messages

18 oct. 2011, 11:32

Salut, il faut utiliser les jointures.

dans ce genre:
SELECT part.num_part,part.nom,part.prenom FROM part
   INNER JOIN insc ON insc.num_part = part.num_part
   INNER JOIN act ON act.num_act = insc.num_act
WHERE insc.presence = ?? AND act.type = ??
C'est quelque chose dans ce genre.

J'ai simplifier le nom de tes tables donc remplace par les tiens, ainsi que les ?? en fonction de ta recherche.

Petit nouveau ! | 8 Messages

18 oct. 2011, 11:57

Merci +++ pour votre réponse,

Voici votre requête adaptée à mes tables :
SELECT participants.num_participant, participants.nom, participants.prenom
FROM participants
INNER JOIN inscriptions ON inscriptions.num_participant = participants.num_participant
INNER JOIN activites ON activites.num_activite = inscriptions.num_activite
ORDER BY participants.nom
LIMIT 0 , 30
Voici le résulat :
Image

On se rapproche de l'objectif, reste à compter pour chaque participants en partant de celui qui a le plus d'inscriptions:

Addoun : 6
Aarab : 5
Abboudi : 1
Abras : 1

Je pense à COUNT et GROUP BY mais je nage un peu, je vais des tests.

Avez-vous une piste de solutions ?

Merci +++

Nicolas

Eléphant du PHP | 190 Messages

18 oct. 2011, 12:56

Je ne suis pas très callé en mysql mais je pense que le count ne fonctionnera pas dans ce cas ci avec un GROUP BY. Il faudrait confirmation d'un pro :)

La solution que je vois serai de trier le résultat de ta requête via ton script php en incrémentant une variable selon la valeur de ton num_participant.

A confirmer donc.

Mammouth du PHP | 568 Messages

18 oct. 2011, 13:09

Je ne suis pas très callé en mysql mais je pense que le count ne fonctionnera pas dans ce cas ci avec un GROUP BY. Il faudrait confirmation d'un pro :)

La solution que je vois serai de trier le résultat de ta requête via ton script php en incrémentant une variable selon la valeur de ton num_participant.

A confirmer donc.
Et bien justement, en utilisant le COUNT ET GROUP BY, tu devrais arriver au bon résultat.