Problème de requetes imbriquées - SQL/NoSQL - Programmation
MarshPosté le 27-05-2007 à 10:12:38
Bonjour,
Voici une requete qui me calcule, pour chaque type d'abonnement téléphonique, le service qui est le plus appelé:
(SELECT MAX(nb) FROM (SELECT a.idfabo, numservice, COUNT(numutilisation) AS nb FROM abonnement a, utilise, contrat WHERE a.idfabo=contrat.idfabo AND contrat.numcontrat=utilise.numcontrat GROUP BY utilise.numservice, a.idfabo) AS count2 GROUP BY idfabo);
Cependant, elle n'affiche que le maximum d'utilisations, mais ne marque pas le service correspondant ni le type d'abonnement correspondant...
J'ai essayé de l'imbriquer dans une autre requete, mais ça ne marche pas non plus... :
SELECT idfabo, numservice, nb AS Nb_Utilisations_Max FROM (SELECT a.idfabo, numservice, COUNT(numutilisation) AS nb FROM abonnement a, utilise, contrat WHERE a.idfabo=contrat.idfabo AND contrat.numcontrat=utilise.numcontrat GROUP BY utilise.numservice, a.idfabo) AS count1 WHERE nb IN (SELECT MAX(nb) FROM (SELECT a.idfabo, numservice, COUNT(numutilisation) AS nb FROM abonnement a, utilise, contrat WHERE a.idfabo=contrat.idfabo AND contrat.numcontrat=utilise.numcontrat GROUP BY utilise.numservice, a.idfabo) AS count2 GROUP BY idfabo);
Marsh Posté le 27-05-2007 à 10:12:38
Bonjour,
Voici une requete qui me calcule, pour chaque type d'abonnement téléphonique, le service qui est le plus appelé:
(SELECT MAX(nb)
FROM (SELECT a.idfabo, numservice, COUNT(numutilisation) AS nb
FROM abonnement a, utilise, contrat
WHERE a.idfabo=contrat.idfabo
AND contrat.numcontrat=utilise.numcontrat
GROUP BY utilise.numservice, a.idfabo) AS count2
GROUP BY idfabo);
Cependant, elle n'affiche que le maximum d'utilisations, mais ne marque pas le service correspondant ni le type d'abonnement correspondant...
J'ai essayé de l'imbriquer dans une autre requete, mais ça ne marche pas non plus... :
SELECT idfabo, numservice, nb AS Nb_Utilisations_Max
FROM (SELECT a.idfabo, numservice, COUNT(numutilisation) AS nb
FROM abonnement a, utilise, contrat
WHERE a.idfabo=contrat.idfabo
AND contrat.numcontrat=utilise.numcontrat
GROUP BY utilise.numservice, a.idfabo) AS count1
WHERE nb IN (SELECT MAX(nb)
FROM (SELECT a.idfabo, numservice, COUNT(numutilisation) AS nb
FROM abonnement a, utilise, contrat
WHERE a.idfabo=contrat.idfabo
AND contrat.numcontrat=utilise.numcontrat
GROUP BY utilise.numservice, a.idfabo) AS count2
GROUP BY idfabo);
Avez-vous des idées?
merci!!!!!!