|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
bonjour tout le monde
avant de poster mon problème j'ai fait une recherche sur tout les forum(s) et je n'ai vu ce que je veux poster alors voila : T_Produits ---------- N_Prod N_Cat Produit Min_P Unité T_Entrees ---------- Idx_E Cod_Frn Code_Prd_E Qte_E Prix_E Date_E T_Sorties ---------- Idx_S Cod_CL Code_Prd_S Qte_S Prix_S Date_S Mon problème : résultat de cette requête : il me double la quantité du premier produit entrées (achats) . la photo jointe expliquera mieux par exemple T_Entrees: 1ere entrée 13 cahiers 2éme entrée 62 Stylos 3éme entrée 07 cahiers par exemple T_Sorties: 1ere sortie 5 cahiers 2éme sortie 6 Stylos Ma Requête ------------ Code SQL :
|
||
|
|
01
|
|
|
#2 | ||
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 860 ![]() |
Salut
La façon de définir tes jointures est dépassée, il est préférable en respectant les normes SQL actuelles d'utiliser des JOIN. Ce qui d'ailleurs facilite la lecture de la requête. Voici la requête traduite, en utilisant JOIN pour les jointures entre tables, ces tables possèdent un alias, et les colonnes sont préfixées avec cet alias. Tu remarqueras également la présence de la fonction COALESCE qui te renvoie une quantité à 0 même en l'absence d'entrée ou de sortie sur un produit. Code SQL :
Si ta quantité est toujours doublée, et bien c'est que tu as un enregistrement saisi en double dans les entrées. @+ Claudius.
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
||
|
|
10
|
|
|
#3 | ||||
|
Expert Confirmé
![]() ![]() |
Bonjour,
C'est bien de donner la description, mais il faudrait encore qu'elle soit complète. Un jeu d'essai complet serait l'idéal (requêtes SQL de création des tables, requêtes d'insertion des lignes de test, et requête de test). Sans cela, je vois déjà un GROS défaut à votre requête : si pour un produit il y a des entrées mais pas de sortie ou l'inverse, la requête ne traduira pas la réalité des stocks ! C'est embêtant ! ![]() Ensuite, avec la clause group by, le mot clé distinct est inutile. J'écrirais donc (bien que grillé par @Cl@udius Code sql :
J'écrirai donc : Code sql :
__________________
Philippe. |
||||
|
|
10
|
|
|
#4 | ||||||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
Merci de votre réponses si constructives
1- La façon de définir tes jointures est dépassée . tu as raison et pourtant c'est avec SQL que j'ai commencé a faire des jointures de tables.db . Code SQL :
---- 2- pour ce code Code SQL :
mais il me retourne une erreur : Erreur syntaxe (opérateur absent) 'E.CD_P_e = T.N_P LEFT JOIN T_sorties S ON S.CD_P_s = T.N_P'. mais Oui ça marche pour code : ![]() Code SQL :
sauf que je doit éliminer les produits : QTE='' ou QTS='' ADOQuery + Delphi 2010 --- Merci encore pour vos réponses . |
||||||
|
|
00
|
|
|
#5 | |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 207 ![]() |
Citation:
j'aurais quand même bien aimé connaitre le SGBD
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
ouf
Citation:
Citation:
Thank's |
||
|
|
00
|
|
|
#7 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 860 ![]() |
Pour info l'équivalent sous Access de la fonction COALESCE est NZ.
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#8 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 207 ![]() |
Bon Access n'est pas ma tasse de thé , il est bizarre que les JOIN ne fonctionnent pas, dommage car avec le GROUP BY on peut utiliser la HAVING
enfin on peut tricher avec la SQL qui fonctionne Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
00
|
|
|
#9 | ||||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
excuse moi de vous répondre si tard car j'étais en train lire quelques tutoriels sur NZ
Code SQL :
mais ça donne une erreur (voir le fichier joint) Citation:
![]() le problème et là Citation:
merci |
||||
|
|
00
|
|
|
#10 |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 207 ![]() |
Même avec une tonne de sucre , access sera toujours aussi imbuvable pour moi
mauvaise habitude de Firebird oblige , j'ai indiqué un group by avec les numéros de champs , qu'en serait-il en indiquant les noms ? "GROUP BY N_P,Produit" voire "GROUP BY T.N_P,T.Produit" entre parenthèses avec Firebird j'aurais utilisé la proposition avec les join et le group by et simplement rajouté le Having . C'est plus un problème SQL access que Delphi
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
00
|
|
|
#11 | |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
Bonjour
Citation:
|
|
|
|
00
|
|
|
#12 | |||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 207 ![]() |
Citation:
la question est : Code :
si elle ne fourni rien , en enlevant le HAVING , a t'on des résultats ? il faut essayer le SQL directement sur Access (que je n'ai pas)
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|||
|
|
10
|
|
|
#13 | ||
|
Membre émérite
![]() Jérémy Analyste programmeeur Delphi / C# Inscription : mars 2005 Messages : 732 ![]() |
De mémoire comme ça, il me semble que sous access, il n'est pas possible d'utiliser HAVING avec des alias
Est-ce que ceci fonctionne ? Code :
|
||
|
|
20
|
|
|
#14 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
Salut
Citation:
si on enlève le HAVING il affiche tous les produits (entrant , sortant et même les produits qui sont dans la table produit et qui ne sont pas encore entrées) -------- salut pop Citation:
![]() c'est ce que je voulais .merci pour ces informations surtout COALESCE , NZ et je crois que je vais brancher a FireBird . popo ![]() -- une question est devenu des tutoriels .Merci a vous tous |
||
|
|
00
|
|
|
#15 |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 860 ![]() |
popo
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
00
|
|
|
#16 | ||
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 207 ![]() |
pas tout fait d'accord avec popo désolé , du coup le max et le group ne servent a rien
Code :
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
||
|
|
10
|
|
|
#17 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 96 ![]() |
Sergio
![]() ça marche cette Requête . hé ben le thé avec du sucre et un peut de menthe donne des idées
|
|
|
00
|
|
|
#18 |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 207 ![]() |
en fait j'y avais pensé (pas au sucre ni a la menthe) au where sur les (SELECT ... ) mais je trouve que cette manière est "moche" d'un point de vue traitement , vu que l'on fait 4 SELECT en plus du SELECT de base , je ne comprend pas pourquoi les LEFT JOIN n'ont pas été acceptés (un
de Access ?) mais je laisse ce symptôme a un Doc House Access (en tout cas avec Firebird ces join , group + having auraient fonctionnés mais là je prêche pour ma paroisse )
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
00
|
|
|
#19 |
|
Membre actif
![]() Pierre GIRARDRetraité Inscription : septembre 2002 Messages : 119 ![]() |
J'ai trouvé ce fil très intéressant, mais je suis tombé dessus par hasard. Serait-il possible de changer le titre en ajoutant le mot clé "Jointure". Car débutant moi aussi (même à 61 ans), j'ai souvent des problèmes de ce type dans mes requêtes.
Surtout que moi, c'est FireBird que j'utilise. Il y a une vingtaine d'années, j'utilisais Paradox que je trouvais déjà nettement plus intéressant qu'Access.
__________________
Pierre GIRARD |
|
|
01
|
|
|
#20 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
Citation:
__________________
Philippe. |
||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com