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 29/04/2008, 17h15   #1
Invité régulier
 
Inscription : juin 2005
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 13
Points : 5
Points : 5
Par défaut Problème pour récupérer les infos de l'enregistrement le plus récent !

Bonjour tout le monde,

Voici le MCD :



Voilà j'ai un gros problème, je n'arrive pas à récupérer la dernière formation effectuée pour chaque salarié. J'ai essayé avec la requête suivante mais rien n'y fait:

Code :
1
2
3
4
5
6
7
8
9
SELECT Perso.Nr_personnel,Perso.Nom,Perso.Prenom,Part.Nr_formation,Form.Debut_cours
FROM personnel AS Perso
INNER JOIN participant AS Part
USING (Nr_personnel)
LEFT JOIN formation AS Form
ON Form.Nr_formation=Part.Nr_formation
AND Form.Debut_cours = (SELECT MAX(Debut_cours)
                                    FROM formation Form2
                                    WHERE Form2.Nr_formation = Part.Nr_formation)
Le problème c'est qu'il m'affiche les formations effectuées pour chaque salarié !

Par avance Merci !

Cordialement,

Djskynet
djskynet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 19h04   #2
Membre Expert
 
Inscription : août 2002
Messages : 1 249
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 249
Points : 1 512
Points : 1 512
Envoyer un message via Yahoo à ylarvor
sur sql serveur 2005, vous pouvez utiliser les fonctions de classements et de fenetrage.
ylarvor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 21h57   #3
Invité régulier
 
Inscription : juin 2005
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 13
Points : 5
Points : 5
Bonjour,

je n'es pas très bien saisie votre réponse, le problème c'est que je n'arrive pas à trouver la requête adéquate pour récupérer la dernière formation de chaque membre du personnel que j'affiche dans un tableau !

Par avance Merci,

Cordialement,

Djskynet
djskynet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 08h23   #4
Membre Expert
 
Inscription : août 2002
Messages : 1 249
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 249
Points : 1 512
Points : 1 512
Envoyer un message via Yahoo à ylarvor
http://blog.developpez.com/index.php..._ET_DE_RANKING
ylarvor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 16h42   #5
Invité régulier
 
Inscription : juin 2005
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 13
Points : 5
Points : 5
Merci pour le lien, j'ai essayer de comprendre l'article et le tuto, j'ai même regarder des liens sur le net sur ces fonctions mais j'avoue que j'ai du mal à comprendre le fonctionnement de celles-ci. Es ce qu'il serait possible qu'on m'explique ! ou es ce qu'il existe un tutoriel plus simple à comprendre.

Par avance Merci ,

Cordialement,

Djskynet
djskynet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 15h28   #6
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
Inutile d'utiliser les fonction de ranking. Une bonne idée serait d'utiliser une vue ou une CTE afin de simplifier votre requête par factorisation...

Exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
WITH T_PERSONNEL_FORME
AS (SELECT P.*, Effectuee, F.*
    FROM   personnel AS P
           INNER JOIN participant AS PP
                 ON P.Nr_personnel = PP.Nr_personnel
           INNER JOIN formation AS F
                 ON PP.Nr_formation = F.Nr_formation)
SELECT Nr_personnel, Nom, Prenom, Nr_formation, Debut_cours
FROM   T_PERSONNEL_FORME Pout
WHERE  Debut_cours = (SELECT MAX(Debut_cours)
                      FROM   T_PERSONNEL_FORME AS Pin
                      WHERE  Pin.Nr_Personnel = Pout.Nr_Personnel)
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro 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 23h49.


 
 
 
 
Partenaires

Hébergement Web