probleme requete

probleme requete - SQL/NoSQL - Programmation

Marsh Posté le 10-02-2006 à 22:52:04    

Salut à tous
j'ai un petit probleme pour effectuer une requete.
Tout d'abord je vous exposes mes tables.
 
J'ai une table abonnement (abon_id(pk),abon_libelle)
ensuite j'ai une table formule (abon_id(fk),form_periode,form_type,form_prix) qui reprend les differentes formules d'abonnement. Un formule d'abonnement c'est une periode de validité, le type de periode et le prix. par ex: 1 jour 5€  ou 1 mois 35€.
Un abonnement est valable pour plusieurs activités et une activités peut etre comprise par plusieurs abonnement.
J'ai donc une table activites (acti_id(pk),acti_libelle) et une table abon_activite (abon_id(fk), acti_id(fk))qui est une association de la table abonnement et activité.
 
Pour chaque abonnement je voudrais connaitre le nombre d'activités qu'il comprend et le nombre de formule qu'il possède.
 
j'ai essayé la requête suivante:
 
SELECT ab.abon_libelle, count( ac.acti_id ) as NbrActivites , count( f.abon_id ) AS NbrFormules
FROM abonnement ab
INNER JOIN abon_activite aa ON ab.abon_id = aa.abon_id
INNER JOIN formule f ON ab.abon_id = f.abon_id
GROUP BY ab.abon_id
 
Mais j'obtiens le nombre de formule dans les 2 colonnes (NbrActivites et NbrFormules)
C'est surement tout con, j'ai essayé differentes manière mais je n'arrive pas à obtenir le résultat voulu.
Si quelqu'un a une petite idée. Merci d'avance ! ;)
 

Reply

Marsh Posté le 10-02-2006 à 22:52:04   

Reply

Marsh Posté le 11-02-2006 à 01:04:42    

SELECT ab.abon_libelle, count(DISTINCT ac.acti_id ) as NbrActivites , count(DISTINCT f.abon_id ) AS NbrFormules  
FROM abonnement ab  
INNER JOIN abon_activite aa ON ab.abon_id = aa.abon_id  
INNER JOIN formule f ON ab.abon_id = f.abon_id  
GROUP BY ab.abon_id;

Reply

Marsh Posté le 11-02-2006 à 02:57:21    

Me semblait bien que j'étais pas loin ! ;)
J'avais essayer avec distinct mais pas des 2 cotés
 
Un grand merci en tout cas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed