Salut à tous, :o
voilà je n'arrive pas trouver soluce à ce problème. Voici un exemple et pis après je complique:
SELECT * from ma_table where clé_primaire IN (select clé_primaire, max(date) from ma_table group by clé_primaire);
Vous voyez ce que çà devrait faire... Retourner l'enregistrement d'un objet correspondant à son dernier archivage. Par exemple, retrouver la dernière mesure effectuée par un capteur.
"Ben qu'il est couillon celui-là, il a sa soluce" se diront certains. Sauf que dans la réalité ma clé primaire est forcément composée: Un enregistrement d'une mesure est caractérisé avant tout par l'identifiant du capteur ET la date à laquelle cette mesure à été faite.
Donc je reexplique avec un schéma:
TABLE_mesure
==========
NOM_capteur
DATE_mesure
VALEUR
et donc NOM et DATE forment la clé primaire et DONC
pour retrouver le dernier enregistrement de chaque capteur:
select nom_capteur, max(date_mesure) from ma_table group by nom_capteur
c'est bien mais je peux pas obtenir la valeur de la mesure.
(Logique puisque c'est un group). Et donc par dessus ca je dois faire un select de *, problème mon lien est sur 2 colonnes:
SELECT * from mesures where nom et date IN (select nom, max(date) from ma_table group by clé_primaire);
et là la syntaxe en prend un gros coup!!! C'est un truc tellement banal qu'il doit bien exister une achtuche...
Merci
Partager