Bonsoir à tous,
j'ai deux tables, une représentant l'ensemble du matériel et l'autre celle relevé lors d'un inventaire dans un de nos stock.
Le but est suite à un copier coller de l'inventaire fait manuellement, vérifier si cela correspond a ce que la table matériel indique, autrement dit que tout le matériel est bien en stock qu'il ne manque rien ou qu'il n'y a rien en plus
j'essaye donc de faire trois requete :
- Une premiere requete pour vérifier si il y a des doublons dans l'inventaire éffectué (cela arrive).
- Une seconde pour vérifier ce qui devrait etre en stock mais est manquant dans l'inventaire.
- Une troisieme pour vérifier ce qui est dans l'inventaire mais qui ne devrait pas y etre(car est censé etre installé, ou en stock mais sur un autre site.
pour ce faire, dans la table base_mat, il y a une colonne site, et une colonne etat, je connais donc le matériel qui est installé, en stock et dans quel stock(site).
l'inventaire est fait sur un site en particulier, il s'agit donc d'un critere a prendre en compte !
-Pour les doublons j'ai une requete faite simplement grace à l'assistant access et qui fonctionne tres bien :
- Pour ce qui devrait etre en stock mais n'est pas dans l'inventaire, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT First(base_inventaire.Num_immo) AS Num_immoChamps, Count(base_inventaire.Num_immo) AS NombreDeDbls FROM base_inventaire GROUP BY base_inventaire.Num_immo HAVING (((Count(base_inventaire.Num_immo))>1));
Là ou j'ai un probleme c'est sur la derniere requete,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT base_mat.Num_immo, base_mat.site, base_mat.date_inv FROM base_mat LEFT JOIN base_inventaire ON base_mat.Num_immo = base_inventaire.Num_immo WHERE (((base_mat.site)=Getgsite()) AND ((base_mat.etat)="en stock") AND ((base_inventaire.Num_immo) Is Null));
si je fait une simple requete de non correspondance, je ne ressort finalement que le matériel qui n'est pas référencé dans la table base_mat(ce qui ne devrait d'ailleurs pas arriver)il ne ressort donc pas le matériel éxistant qui est installé et/ou sur un site différent.
j'ai donc essayé d'ajouter les criteres dans :
mais sans succes par contre si je construit une premiere requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT base_inventaire.Num_immo FROM base_inventaire LEFT JOIN base_mat ON base_inventaire.Num_immo = base_mat.Num_immo WHERE (((base_mat.Num_immo) Is Null));
base_mat Requête1
et ensuite une seconde :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT base_mat.Num_immo FROM base_mat WHERE (((base_mat.site)=getgsite()) AND ((base_mat.etat)="en stock"));
"base_inventaire" et "base_mat Requête1" sans correspondance
j'obtiens alors le résultat souhaité
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT base_inventaire.Num_immo FROM base_inventaire LEFT JOIN [base_mat Requête1] ON base_inventaire.Num_immo = [base_mat Requête1].Num_immo WHERE ((([base_mat Requête1].Num_immo) Is Null));
je n'arrive donc pas a ce résultat en écrivant une seule requete
d'avance merci de votre aide.
PS : Les couleurs correspondent avec la copie d'écran
Partager