j'ai les deux tableaux ci-dessous (avec quelques données d'échantillons)Fusionner les requêtes dans une requête
Logs:
ID | SETID | DATE ======================== 1 | 1 | 2010-02-25 2 | 2 | 2010-02-25 3 | 1 | 2010-02-26 4 | 2 | 2010-02-26 5 | 1 | 2010-02-27 6 | 2 | 2010-02-27 7 | 1 | 2010-02-28 8 | 2 | 2010-02-28 9 | 1 | 2010-03-01
STATS:
ID | OBJECTID | FREQUENCY | STARTID | ENDID ============================================= 1 | 1 | 0.5 | 1 | 5 2 | 2 | 0.6 | 1 | 5 3 | 3 | 0.02 | 1 | 5 4 | 4 | 0.6 | 2 | 6 5 | 5 | 0.6 | 2 | 6 6 | 6 | 0.4 | 2 | 6 7 | 1 | 0.35 | 3 | 7 8 | 2 | 0.6 | 3 | 7 9 | 3 | 0.03 | 3 | 7 10 | 4 | 0.6 | 4 | 8 11 | 5 | 0.6 | 4 | 8 7 | 1 | 0.45 | 5 | 9 8 | 2 | 0.6 | 5 | 9 9 | 3 | 0.02 | 5 | 9
Chaque jour, de nouveaux journaux sont analysés sur différents ensembles d'objets et stockés dans la table LOGS. Parmi d'autres processus, certaines statistiques sont calculées sur les objets contenus dans ces ensembles et les résultats sont stockés dans la table STATS. Ces statistiques sont calculées à l'aide de plusieurs journaux (identifiés par les colonnes STARTID et ENDID). Donc, quelle pourrait être la requête SQL qui me donnerait les dernières statistiques calculées pour tous les objets avec les dates de journal correspondantes.
Dans l'exemple donné, les lignes de résultat serait:
OBJECTID | SETID | FREQUENCY | STARTDATE | ENDDATE ====================================================== 1 | 1 | 0.45 | 2010-02-27 | 2010-03-01 2 | 1 | 0.6 | 2010-02-27 | 2010-03-01 3 | 1 | 0.02 | 2010-02-27 | 2010-03-01 4 | 2 | 0.6 | 2010-02-26 | 2010-02-28 5 | 2 | 0.6 | 2010-02-26 | 2010-02-28
Ainsi, les plus récentes statistiques pour l'ensemble 1 sont calculées avec les journaux de février 27 à mars 1, tandis que les statistiques pour l'ensemble 2 sont calculées à partir de 26 février à feb 28. l'objet 6 ne se trouve pas dans les lignes de résultat car il n'y a pas de statistiques sur celui-ci dans la dernière période de temps.
Dernière chose, j'utilise MySQL.
Une idée?
+1 pour une question clairement formulée avec de bonnes données d'échantillon. –
Est-ce que votre 0,35 pour l'objet 4, 5 est une faute de frappe? (il devrait être 0,6?) – Patrick