problème pour trouver la bonne requête...

problème pour trouver la bonne requête... - SQL/NoSQL - Programmation

Marsh Posté le 26-08-2011 à 22:12:08    

bonsoir,
 
je rencontre des difficultés pour trouver quelle requête sql me renverrait le bon résultat à ma problématique que voici :
 
un salarié à un instant T fait partie d'un service. Il change régulièrement de service.  
j'ai une table (base access) dans laquelle je stocke les changement de services, qui comporte ces champs :
 
id_salarie | date_changement | ancien_service | nouveau_service
 
exemple de données :
 
32 | 05/12/2010 | 12 | 7
32 | 15/12/2010 | 7 | 8
 
Je souhaiterais savoir, à partir d'une date, dans quel service se trouvait un salarié donné à ce moment là (un salarié ne peut pas rester moins de 2 jours dans un même service).
Je pensais que c'était tout simple, mais je tourne un peu en rond. :/
 
si certains ont des pistes...
 
Merci  :hello:

Message cité 1 fois
Message édité par clements42 le 26-08-2011 à 22:12:31
Reply

Marsh Posté le 26-08-2011 à 22:12:08   

Reply

Marsh Posté le 26-08-2011 à 22:25:04    

select ancien_service From Table where date_changement between date and "date -1 jour" ?

Reply

Marsh Posté le 26-08-2011 à 22:40:12    

clements42 a écrit :

...
 
Je souhaiterais savoir, à partir d'une date, dans quel service se trouvait un salarié donné à ce moment là (un salarié ne peut pas rester moins de 2 jours dans un même service).
 
...

Souvent, en SQL, si on ne trouve pas la réponse, c'est qu'il faut changer la question :)  
En fait, tu cherche le service qu'à rejoint l'employé lors de son dernier changement ayant eu lieu avant la date qui t'intéresse :

SELECT nouveau_service
FROM table_des_changements
WHERE date_changement < '01/01/2011'
ORDER BY date_changement DESC
LIMIT 1


 
(le LIMIT 1, c'est du MySQL, doit bien y avoir un équivalent sous Access)


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 26-08-2011 à 23:05:20    

Merci bien à vous deux. J'ai trouvé une solution qui ressemble très fortement à la tienne mrbebert. D'ailleurs, il me semble bien que ton "desc" dans le order by est inutile, non ?

Reply

Marsh Posté le 26-08-2011 à 23:16:31    

Ah non. La date la plus récente, c'est la 1ère quand on tri par ordre décroissant. Si tu ne mets pas le ORDER BY, le SGBD est susceptible de te renvoyer n'importe quelle ligne.


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 29-08-2011 à 08:55:16    

Ca depend du clustered index en fait, peut etre que c'est le cas dans la table de clements.
Mais evidement il vaut mieux eviter de se baser la dessus et faire comme mrbebert dit et mettre le order by.

Reply

Sujets relatifs:

Leave a Replay

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