Bonjour à tous
Je bosse sur une requête qui me permettra de "maintenir" une bdd sous access.
La base de donnée contient les calculs effectués sur des produits.
Les calculs sont effectués selon un calendrier bien précis. Le process de calculs est indépendant de la base, au détail prêt que les résultats y sont stockés.
Grosso modo, chaque jour du calendrier spécifique, un calcul est effectué sur tous les produits et est stocké dans la base. Lorsque tout se passe bien, le calcul est effectué le jour même. Parfois, ça peut merder et le calcul peut ne pas être fait. Il reste possible de le faire à posteriori.
La requête que je souhaite créer à pour objectif d'identifier les dates et les produits pour lesquels les calculs n'ont pas été faits. Sachant que pour un même jour, le calcul peut avoir été fait pour tout ou partie des produits.
Le problème revient donc à identifier des "trous" dans une base de données à partir :
-d'une liste de produits
-d'une liste de dates du calendrier spécifique
En gros, voici les tables dont je dispose:
TableProduits:
-id (clé primaire, numéro auto)
-Spec1
-Spec2
....
TableCalculs:
-id (clé primaire, numéro auto)
-id_Produit
-Date_Calcul
CalendrierS
-id (clé primaire, numéro auto)
-DateC
Les tables Produit et Calculs sont liées (imbrication) via TableProduits.id et TableCalculs.id_Produit
J'ai monté une première requête sur une base épurée: 1 seul produit en base dans la table produits et uniquement les calculs effectués sur ce produits.
La requête suivante me permet de récupérer toutes les dates contenues dans le calendrierS et qui n'existent pas dans la table calculs (donc, pour ce produit, toutes les dates où le calcul n'a pas été fait):
Citation :
SELECT *
FROM CalendrierS LEFT JOIN TableCalculs ON CalendrierS.DateC = TableCalculs.[Date_Calcul]
WHERE (((TableCalculs.[Date_Calcul]) Is NUll));
|
Cette requête fonctionne, (bon, le * de Select peut être limité à la date) et me retourne mes résultats.
Si je l'essaye sur ma base complète, elle me ressort bien moins de trou, j'ai l'impression que dès qu'un produit à été l'objet d'un calcul, quelqu'il soit, elle considère que tout les produits ont été calculés.
A votre avis, quelle piste je devrais suivre pour pondre 1 requête qui me sorte une table du genre:
-id_produit
-date
Avec donc, pour chaque produit, la liste des dates où ils n'ont pas été calculés
J'éspère que j'ai été clair n'hésitez pas à me demander plus de détails
Message édité par hush hush le 25-07-2013 à 11:34:37