Retourner aux forums || Retourner au forum Programmation.SQL
Programmation.SQL : Requête MYSQL: Distinct ? Group ?
Posté par bichenoubi () le 31 juillet 2006Les champs:
poste, annee, nom
Les données:
pdg, 2004, tim
finances, 2005, vic
marketing, 2005, bob
pdg, 2005, luc
finances, 2006, joe
Comment faire pour récupérer la liste des employés actuels?
Merci
> Lire le message (7 commentaires, moyenne: 1,3).
Pas d'autres contraintes ?
Si tu souhaites la liste des employés actuels, la requête est la suivante :
select nom
from
<ta_table>
where
annee=2006
mais je pense que tu n'as pas exprimé ton problème de manière complète ..
-
[^]Re: Pas d'autres contraintes ?
subquery
En fait je pense que tu souhaites "le nom de la personne qui a été engagée le plus recemment pour un poste donné, qu'importe l'année"
Si c'est le cas et que ton mysql est pas trop vieux (>= 4.1 il me semble), ceci ira :
select t1.*
from t t1, (select poste, max(annee) a from t group by poste) t2
where t1.poste = t2.poste
and t1.annee = t2.a;
Ya surement d'autres moyens :)
-
[^]Re: subquery
Posté par bichenoubi () le 05/08/2006 à 22:28. (lien). Évalué à 1.Merci,
Je ne peux malheuresuement tester pour l'instant (fin de semaine ;)), mais je vais y jeer un coup d'oeil dès mardi matin (longue fin de semaine ;)).
Ah, j'avais pensé faire justement ça en deux requêtes, mais j'espérais que cela fonctionne en juste une.
-
[^]Ne fonctionne pas dans mysql 4.1.18
Posté par bichenoubi () le 09/08/2006 à 03:50. (lien). Évalué à 1.Malheureusement, la requête ne fonctionne pas dans MySQL 4.1.18.
Cela ne génère pas d'erreur, seulement aucun résultat.
Il semblerait que ce soit l'ajout du max et group by qui fasse ne pas fonctionner le tout. Si j'essaie cette requête bidon, ça fonctionne.
SELECT `representants` . *
FROM `representants` AS t1 , (
SELECT `annee` , `poste`
FROM `representants`
WHERE `annee` =2006
) AS t2
WHERE (
`t1`.`poste` = `t2`.`poste`
AND `t1`.`annee` = `t2`.`annee`
);
Est-ce que quelqu'un connait une manière d'y arriver tout de même?
Merci
Précisions
Pour préciser:
Oui l'année est l'année d'embaûche.
Je ne veux que l'employé le plus récent à chacun des poste, et vu que les années diffèrent et ne sont pas non plus nécessairement l'année actuelle, il faut y aller par une requête du type que Duaner a présenté.
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.SQL



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.