Bonjour à tous,
J'ai besoin de l'aide d'experts SQL pour m'aider à mixer deux requêtes en une:
La première requête sélectionne le plus vieux record pour chaque (numéro,ligne) distinct selon les champs (date/heure)
La seconde sélectionne tous les enregistrements de la table comptage selon qu'ils soient également existant dans la table lecture (basé sur les champs (numéro, ligne) et ayant la plus grande date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT * FROM comptage AS t WHERE (((t.heure)=(SELECT Max(heure) FROM Comptage AS cpt WHERE (((cpt.date)=(SELECT MAX(date) FROM Comptage WHERE numero = cpt.numero AND ligne = cpt.ligne ))) AND cpt.numero = t.numero AND cpt.ligne = t.ligne and cpt.date = t.date)))
Au final, je voudrais que pour chaque record de la table lecture, récupèré le record correspondant de la table comptage et pour lequel la date/heure est la plus grande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT cpt.* WHERE lecture.client = cpt.numero AND lecture.ligne = cpt.ligne AND cpt.date_lecture = (SELECT MAX(date) FROM comptage WHERE numero = cpt.numero AND ligne = cpt.ligne )
Pour expliquer le contexte, la table comptage contient un record par relevé (lecture d'un compteur électrique). Dans pour un même compteur (ligne / numéro) il y a plusieurs records correspondant à chaque lecture dans le temps. Le but est de retrouvé la plus ancienne lecture.
Merci d'avance pour vos propositions.
Partager