universaliss
Messages postés5Date d'inscriptionsamedi 23 août 2008StatutMembreDernière intervention17 mars 2011
-
6 oct. 2010 à 14:42
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 2013
-
15 avril 2012 à 10:04
Bonjour je sollicite votre aide pour un petit problème de requête au sein d'une vue.
J'espère que ce genre de problème n'a pas déjà été posé auquel cas je ne l'ai pas trouvé dans la recherche et je remercie d'avance celui qui me redirigera dessus.
Je tiens absolument a écrire une vue qui,
après moult requête renvoie la table de résultat suivant
id..valeur. type
1 .. 56 1
1 .. 60 2
2 .. 45 2
2 .. 45 3
2 .. 49 4
3 .. 12 2
4 .. 59 5
4 .. 14 6
le tout sur 100 000 lignes.
Je souhaiterai obtenir dans ma vue seulement 1 et un seul tuple par id correspondant au type le plus petit existant pour cet id.
donc
1 56 1
2 45 2
3 12 2
4 59 14
sur le nombre d'id.
Il existe la solution pour chaque tuple de faire un "select top ......order by type asc"
mais là je souhaite avoir le résultat pour l'ensemble des id de la table.
Enfin comme si ça ne suffisait pas, pour des raisons technique je ne peux me servir des curseurs (pas de boucles)
et étant dans la création d'une vue je dois aussi me passer de fonctions.
S'il existe ici des magiciens du sql qu'il se dénoncent et me vienne en aide!
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 20133 15 avril 2012 à 10:04
Bonjour,
Il faut dissocier en 2 requêtes. Une qui compte par Id et une qui prend le min.
SELECT A.Id, B.Valeur, Count(A.Id) as NbId
FROM [MaTable] A INNER JOIN
(SELECT Id, Min(Valeur) as valeur FROM [MaTable] GROUP BY Id) B
ON A.Id B.Id and A.Valeur B.Valeur
GROUP BY A.Id, B.Valeur
Affichage d'un enr par Id avec le min de Valeur et le nombre d'enr de cet Id ayant le min de valeur.