|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : juillet 2009 Messages : 210 ![]() |
Bonjour, voici deux tables et leurs champs :
-tProduits -N°Produit (clé primaire) -StockMini -tStocks -N°Stock (clé primaire) -N°Produit Je cherche à faire une requête qui sélectionne TOUS les produits de la table tProduits avec un StockMini >0 et les produits (regroupés par N°Produit) de la table tStocks avec la somme de leur QteStock.-QteStock Si un N°Produit de la table tProduits n'existe pas dans la table tStocks, une ligne doit quand même apparaitre dans le résultat de la requête avec ce N°Produit et son StockMini et faire comme s'il existait dans la table tStocks avec une QteStock = 0. Le but est donc de voir les produits en stock qui ne respectent pas le stock minimum imposé et aussi de voir quels produits ne sont actuellement pas en stocks. Voici ma requête faite avec l'assistant requête d'access qui n'affiche que les produits présents en stocks et pas ce qui n'y sont pas : Code :
Si quelqu'un a une piste je suis preneur. Merci d'avance. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Bonjour Mat08,
Je n'ai pas vérifié la pertinence de ta requête mais, s'il te manque uniquement les produits présents dans tProduits et absents dans tStocks, alors il faut que tu ajoutes une flèche à droite (LEFT JOIN) : via l'assistant, double-click sur le trait de liaison puis étudies les explications, elles sont très claires (cela devrait être l'option 2). D'autre part, crées une clause WHERE pour tProduits.StockMini)>0 (via l'assistant, "Où"). En effet, le HAVING teste après groupage, le WHERE teste avant groupage, c'est donc plus efficace.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : juillet 2009 Messages : 210 ![]() |
Bonjour Richard_35,
J'ai utilisé vos recommandations et j'obtiens ce que je voulais. Je pensais que ça serai plus compliqué. Comme vous l'avez dit il fallait sélectionner l'option 2 après avoir double-cliqué sur le lien entre les deux tables pour faire apparaitre tous les enregistrements de la première table et seulement ceux de la deuxième table qui sont égaux à la première table (pour le champ N°Produit). J'ai aussi dû rajouter un critère (Est Null) pour le champ QteStock en plus de celui que j'avais déjà (Sum(tStock.QteStock)<[tProduits].[StockMini]) pour ne pas perdre les enregistrements dont la QteStock n'est pas renseignée. D'autre part, le fait d'utiliser des critères dans l'assistant et de convertir la requête en SQL pur m'oblige à utiliser la clause HAVING. Je peux bien-sûr la remplacer par WHERE ensuite. Voilà ma requête qui fonctionne convertie avec l'assistant : Code :
|
||
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Bonjour Mat08,
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juillet 2009 Messages : 210 ![]() |
Bonjour, je viens de comprendre ce que vous me dites. J'en tiendrais compte à l'avenir.
Merci encore. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Pas de quoi : c'est un des objectifs de ce forum.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com