cs_dimah77
Messages postés7Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention22 juin 2009
-
19 avril 2009 à 22:35
cs_dimah77
Messages postés7Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention22 juin 2009
-
20 avril 2009 à 18:15
Bonjour,
Je me casse la tete depuis plusieurs jours sur une requete, etant debutant en SQL.
Voila : j'ai une 2 table avec les champs suivant : table ADHERANT : Matricule,Nom_AD,ID_Activité,Sexe
table SPORT : ID_Activité, Nom_ACT
je travaille sur une requete qui me produira le tableau suivant
ID_ACT | Nom_ACT | NbrFilles | NbrGarçons | NbrTotal
j'ai reussi a trouver cette requette :
select distinct(ID_ACtivite), Nom_ACT, sexe, count(ID_Activite) as Nombre
from ADHERANT, SPORT
where SPORT.id_Activite = ADHERANT.ID_Activite
group by id_activite,Nom_ACT,sexe
order by ID_Activite, sexe
mais elle me donne deux ligne distincte pour chaque sport ...
ce que je voudrai c'est avoir une seule ligne detaillée par Sport selon le schema donné ..
Merci
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 20 avril 2009 à 16:58
Bonjour
voici la requete (les noms des champs ne sont peut etre pas les bons, j'ai testé chez moi avec d'autres noms)
il y a peut etre plus simple, mais franchement je ne vois pas
SELECT idactivite, nom_activite, sum(sexeM) as nbrGarcons, sum(sexeF) as nbrFilles, sum(sexeM) + sum(sexeF) as total
from
( select s.idactivite as idactivite, s.nom_activite as nom_activite, count(*) as sexeM, 0 as sexeF
from sport s
left outer join adherent A1 on (s.idactivite = a1.idactivite)
WHERE A1.sexe = 'M'
group by s.idactivite, s.nom_activite
Union
select s.idactivite as idactivite, s.nom_activite as nom_activite, 0 as sexeM, count(*) as sexeF
from sport s
left outer join adherent A1 on (s.idactivite = a1.idactivite)
WHERE A1.sexe = 'F'
group by s.idactivite, s.nom_activite
union
SELECT s.idactivite as idactivite, s.nom_activite as nom_activite, 0 as sexeM, 0 as sexeF
from sport s
where s.idactivite not in (select idactivite from adherent)) as tbl
group by idactivite, nom_activite