Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2011, 10h49   #1
Expert Confirmé
 
Avatar de Lyche
 
Homme
Développeur SQL
Inscription : janvier 2007
Messages : 1 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur SQL

Informations forums :
Inscription : janvier 2007
Messages : 1 959
Points : 3 850
Points : 3 850
Envoyer un message via MSN à Lyche
Par défaut Limiter le nombre de lignes par ID

Bonjour,

Je viens vers vous car je me retrouve devant une situation un peu complexe pour moi. J'ai une demande d'un utilisateur qui a besoin de faire ressorti pour chaque ID de ma base, les 5lignes correspondant aux 5plus grandes utilisations d'un objet de ma base. Malheureusement pour moi, je ne vois absolument pas comment je peux limiter par utilisateur un nombre de lignes à remonter. Si ce n'est en faisant un curseur.. mais je préfèrerais m'en passer si la solution en SQL existe.

Code sql :
1
2
3
4
5
6
 
 
CREATE TABLE dbo.tbUserPrize
( IdUser Int
, IdPrize Int
, DatePlay datetime );

Voici les 3 champs de ma table qui devraient me permettre de ressortir ces infos. J'ai pensé à une CTE, mais je ne vois pas comment arrêter la récursion à 5 et surtout, comment ressortir 1seule ligne par utilisateur pour chaque "niveau". J'avais commencé par resortir le count de chaque couple IdUser/IdPrize, ensuite, je ne vois pas comment limiter à 5par utilisateurs..

Si quelqu'un d'entre vous peut m'aider, même me dire que ce n'est pas possible, ça me serait d'un grand secours.

Cordialement,
Lyche
__________________
Citation:
le programmeur est une machine bizarre qui transforme le café en code et le code en spaghetti
Joueurs de diablo 3 du forum, rejoignez nous Combattre le démon !
Lyche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 10h53   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Regardez du côté de la fonction de fenêtrage ROW_NUMBER.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/06/2011, 11h24   #3
Expert Confirmé
 
Avatar de Lyche
 
Homme
Développeur SQL
Inscription : janvier 2007
Messages : 1 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur SQL

Informations forums :
Inscription : janvier 2007
Messages : 1 959
Points : 3 850
Points : 3 850
Envoyer un message via MSN à Lyche
C'est exactement ce que je cherchais, je ne connaissais pas la fonction PARTITION de OVER().

Grand merci à toi!
Cordialement
__________________
Citation:
le programmeur est une machine bizarre qui transforme le café en code et le code en spaghetti
Joueurs de diablo 3 du forum, rejoignez nous Combattre le démon !
Lyche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h06.


 
 
 
 
Partenaires

Hébergement Web