begin process at 2012 05 26 09:34:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Divers

 > 

Général

 > 

Besoin d'aide, requete, Access


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Besoin d'aide, requete, Access

samedi 8 mars 2008 à 15:11:55 | Besoin d'aide, requete, Access

good speed


Bonjour,

Je travails sur ACCESS  et  je trouves des difficultés à realiser un certain calcul à l'aide d'une requete, voici le problem:

J'ai deux tables  Vente et Depenses

Vente

VenteID     Date    S-total
1              2/3/08   1150
2              2/3/08   1800
3              2/3/08   1200
4              3/3/08   1950
5              3/3/08   1400
6              3/3/08   6500
7              3/3/08   1200

Depenses

DepensesID     Date    Dep-Montant
1                   2/2/08    100
2                   3/3/08    100
3                   3/3/08     50


Alors j'aimerais bien à travers une requete obtenir  Le Total Recette  pour chaque jour en procedant
à la soustraction du total des depenses pour chaque  jour (table depenses) au total du sous total
de chaque jour (table Ventes), ce qui donnerais en principe un resultat  comme suit:

Requete:

Date   Total Recette

2/3/08     4050
3/3/08    10900

Et pour ce faire j'ai essayé la requete suivant mais sans succes:

SELECT vente.Date, Sum(([Sous Total])-( [montant])) AS [Sommes ST-MT], Depenses.Date
FROM vente, Depenses
GROUP BY vente.Date, Depenses.Date
HAVING (((vente.Date)= Depenses.date));

Mais le Resultat de cette requete est le suivant:

vente.Date     Sommes ST-MT             Depenses.Date
2/3/08               3850                    2/3/08
3/3/08              21500                   3/3/08


Ce qui est totalement faux

Alors, Je vous saurais gré de bien vouloir me donner un coup de main sur cette problematique

Merci.

Health & Peace
lundi 10 mars 2008 à 08:35:15 | Re : Besoin d'aide, requete, Access

LIBRE_MAX

Salut, Quoi qu' il en soit, voici comment j' ai résolu le provlème dans un cas similaire: J' ai crée une table temporaire X_Date composée d' un seul champ Date, que je remplis avec les journées qui représente la période que je veux traiter. Par exemple du 01/03/2008 au 07/03/2008. xDate 01/03/2008 02/03/2008 03/03/2008 04/03/2008 05/03/2008 06/03/2008 07/03/2008 Bien xûr il faudra vider cette table avant de la remplir pour chaque nouveau traitement. Ensuite je lis ma table X_Date aus deux autres tables Vente et Depense sur le champ vDate de l' une et dDate de l' autre. Et voici comment se présente ma requete: SELECT X_DATES.xDate, Sum(IIf(IsNull([DEPENSE]![dDate]),0,[DEPENSE]![Dep_Total])) AS Total_Depense, Sum(IIf(IsNull([VENTE]![vDate]),0,[VENTE]![S_Total])) AS Total_Vente, [Total_Vente]-[Total_Depense] AS Recette FROM (X_DATES LEFT JOIN DEPENSE ON X_DATES.xDate = DEPENSE.dDate) LEFT JOIN VENTE ON X_DATES.xDate = VENTE.vDate GROUP BY X_DATES.xDate; Dans ton cas le résultat est le suivant : xDate Total_Vente Total_Depense Recette 01/03/2008 0 0 0 02/03/2008 4150 100 4050 03/03/2008 11050 150 10900 04/03/2008 0 0 0 05/03/2008 0 0 0 06/03/2008 0 0 0 07/03/2008 0 0 0 PS : Le recours à un table Date résout le problème des journées avec vente mais sans dépense et inversement.
lundi 10 mars 2008 à 19:30:50 | Besoin d'aide, requete, Access

good speed


D'abord merci à  toi Libre Max de t'etre interessé à mon problem,
Alors j'ai essayé avec ta methode mais en vain
au debut je me suis posé la question sur  quelle type de relation  fallait-il  etablir entre la table date_x et les  deut autres tables vente  et  Depenses, c'est à dire:

1 (date_x) ...............à  plusieurs  (Depenses )
1 (date_x) ...............à  plusieurs  (Vente)

ou alors l'inverse c à dire

1 ( Depenses)....................à plusieurs (Date_x)
1 (Vente)...........................à plusieurs (Date_x)

alors j'ai essayé les deux types de relation

et j'ai meme choisi le type de jointure que tu as indiqué dans ton code:  LEFT JOIN........(dans la petite fenetre pour les relations et jointures) ensuite j'ai laissé le type de jointure standard pour voir ce que ca allait donner, sans succes, ensuite j'ai meme essayé ta methode dans une nouvelle base de données avec trois tables seulement vente (VenteID, Date, Sous Total,.....)- depenses ( DepensesID, Date, Montant.....) - dates_X  ( DateID, Date) , et le resultat est toujours le meme :

Voici le resultat:
Recette Test
DateTotal_DepenseTotal_VenteRecette
01/03/20080,00 €0,00 €0,00 €
02/03/2008300,00 €4 150,00 €3 850,00 €
03/03/2008600,00 €22 100,00 €21 500,00 €
04/04/20080,00 €0,00 €0,00 €
05/05/20080,00 €0,00 €0,00 €
06/06/20080,00 €0,00 €0,00 €
07/07/20080,00 €0,00 €0,00 €
 
Voici le code SQL

SELECT X_DATES.Date, Sum(IIf(IsNull(Depenses!Date),0,Depenses!Montant)) AS Total_Depense, Sum(IIf(IsNull(Vente!Date),0,Vente![Sous Total])) AS Total_Vente, [Total_Vente]-[Total_Depense] AS Recette
FROM (X_DATES LEFT JOIN Depenses ON X_DATES.Date=Depenses.Date) LEFT JOIN Vente ON X_DATES.Date=VENTE.Date
GROUP BY X_DATES.Date;

Il y a encore la remarque laissé dans ton ps que j'ai pas compris,
tu disais: "PS : Le recours à un table Date résout le problème des journées
avec vente mais sans dépense et inversement."

Merci .





Health & Peace
lundi 10 mars 2008 à 20:32:12 | Re : Besoin d'aide, requete, Access

LIBRE_MAX

Pour commencer , changes la désignation de tes champs dates.
Date est un mot reserve (Type, Fonction) et il risque d' y avoir confusion.
Suis les désignation que j' ai adopté dans l' exemple.

Pour la relation, la première est la bonne.
A savoir:
1 (date_x) ...............à  plusieurs  (Depenses )
1 (date_x) ...............à  plusieurs  (Vente)
 Il faudra juste que pour les deux jointure la propriété soit:
-Tout de x_date et seulement ceux de vente pour les quels les champs
joints sont egaux
-Tout de x_date et seulement ceux de depense pour les quels les champs
joints sont egaux
ce qui se traduit par:

vente   <----  X_Date  ---->  depense.

Clic droit sur la jointure et choisis celle proposée pour aboutir à ce schema.

la requete telle que je l' ai proposée est la bonne.Elle marche à 100%
pour moi.

Pour la remarque laissé au ps:
si tu n' utilises pas la table qui fera le lien entre les deux, de quel type sera
alors la jointure entre vente et depense ?

vente --- depense : si vente et pas depense ou inversement, il manquera
des enregistrements.

ou
vente ----->depense : il manquera les dates de depense qui ne se trouvent
pas dans vente

ou
vente <----depense : il manquera les dates de vente qui ne se trouvent
pas dans depense.

                       



... Y'en a même qui disent qu'ils l'ont vu voler.



/P>
mardi 11 mars 2008 à 20:43:37 | Besoin d'aide, requete, Access

good speed

D"abord merci pour ta reponse Libre_Max,  cependant, j'ai toujours le meme problem
et pourtant j'ai soigneusement appliqué ta methode avec tes dernieres remarques evidemment,
et voici  la demarche que j'ai entrepris pas à pas, step by step, comme s'il y a qq chose qui cloche peut
etre qui tu pourras le voir:


1.J'ai tout repris dans une nouvelle base de données  et voici les tables que j'ai crée:

DEPENSE
DEPENSE
DepenseIDdDateTotal_Depense
102/03/2008100,00 €
203/03/2008100,00 €
303/03/200850,00 €

Propriétés:
DepenseID :  numeroauto  (clé) /  dDate  : Date et Heure /  Total_Depense: Monetaire

VENTE
VENTE
VenteIDvDateS_Total
102/03/20081 150,00 €
202/03/20081 800,00 €
302/03/20081 200,00 €
403/03/20081 950,00 €
503/03/20081 400,00 €
603/03/20086 500,00 €
703/03/20081 200,00 €

Propriétés:
VenteID: numeroauto (clé) / vDate: Date et Heure / S_Total :  Monétaire


X_DATES
X_DATES
XdateIDxDate
101/03/2008
202/03/2008
303/03/2008
404/03/2008
505/03/2008
606/03/2008
707/03/2008

Propriété: XdateID : numeroauto (clé) /  xDate :  date et  Heure

2. Pour Les relations :
 J'ouvre la fenetrre des relations,  j'ajoutes les trois tables, puis, je prends
le champ XdateID de la table X_DATES et je le glisse vers le champ vDate de la table VENTE,
ensuite la fenetre des proprietés de la relation s'ouvre,  je vois une relation type un- à- plusieurs, à gauche le champ XdateID et à droite le champ vDate, puis je vais dans l'onglet type jointure..., je click puis je choisi la 2 em option c à d : "inclure tout les enregistrements de la table 'X_date' et seulement ceux de la table 'VENTE ' pour lequels les champs joints sont égaux"

une fois que c'est fait je fais la meme operation pour la table DEPENSE c à dire:

Je prends le champ XdateID de la table X_DATES et je le glisse vers le champ dDate de la table DEPENSE, ensuite la fenetre des proprietés de la relation s'ouvre,  je vois une relation type un- à- plusieurs, à gauche le champ XdateID et à droite le champ dDate, puis je vais dans l'onglet type jointure..., je click puis je choisi la 2 em option c à d : "inclure tout les enregistrements de la table 'X_date' et seulement ceux de la table 'DEPENSE ' pour lequels les champs joints sont égaux"

3.  Je saisis les données des trois tables respectives:  DEPENSE,  VENTE,  X_Date  comme decrit ci
 -dessus.

4.  Je crée ma requete en mode SQL et j'insere le code suivant:
SELECT X_DATES.xDate, Sum(IIf(IsNull([DEPENSE]![dDate]),0,[DEPENSE]![Total_Depense])) AS Total_Depense, Sum(IIf(IsNull([VENTE]![vDate]),0,[VENTE]![S_Total])) AS Total_Vente, [Total_Vente]-[Total_Depense] AS Recette
FROM (X_DATES LEFT JOIN DEPENSE ON X_DATES.xDate = DEPENSE.dDate) LEFT JOIN VENTE ON X_DATES.xDate = VENTE.vDate
GROUP BY X_DATES.xDate;

et voici le resultat de cette requete

Recette
Recette
xDateTotal_DepenseTotal_VenteRecette
01/03/20080,00 €0,00 €0,00 €
02/03/2008300,00 €4 150,00 €3 850,00 €
03/03/2008600,00 €22 100,00 €21 500,00 €
04/03/20080,00 €0,00 €0,00 €
05/03/20080,00 €0,00 €0,00 €
06/03/20080,00 €0,00 €0,00 €
07/03/20080,00 €0,00 €0,00 €

alors voilà, je comprends plus rien, si  je me suis trompé quelque part corrige moi stp.

Merci.

Health & Peace
mardi 11 mars 2008 à 21:22:40 | Re : Besoin d'aide, requete, Access

LIBRE_MAX

Bonsoir,

Pour la conception,tu as parfaitement fait ce qu' il fallait .
Pour le résultat, la dernière colonne étant tronquée,
est-ce  bien ça ?

01/03/20080,00 €0,00 €0,00 €
02/03/2008300,00 €4 150,00 €3 850,00 €
03/03/2008600,00 €22 100,00 €21 500,00 €
04/03/20080,00 €0,00 €0,00 €
05/03/20080,00 €0,00 €0,00 €
06/03/20080,00 €0,00 €0,00 €
07/03/20080,00 €0,00 €0,00

Pour le 02/03/2008
4150.00 - 300.00 = 3850.00

Pour le 03/03/2008
22100.00 - 600.00 = 21500.00

c' est juste alors !
Ou est le problème ?

NB: Si tu veux que les journées ou
la recette est 0 n' apparaissent pas,
il suffit d' ajouter la clause WHERE Recette <>0.





... Y'en a même qui disent qu'ils l'ont vu voler.



/PRE>
mardi 11 mars 2008 à 22:02:37 | Re : Besoin d'aide, requete, Access

LIBRE_MAX

Ah je viens de comprendre !
c' est le total d' une journée (vente ou depense
qui est faux.
Dans ce cas il faut procèder ainsi:

1 crées une requete Z_VENTES regroupement sur vente

vDate

SommeDeS_Total

01/03/2008

2 000.00 €

02/03/2008

2 000.00 €

03/03/2008

3 000.00 €



2 crées une requete Z_DEPENSES regroupement sur depense

dDate

SommeDeDep_Total

01/03/2008

200.00 €

02/03/2008

200.00 €



3 relies ces deux requetes à X_DATES

xDate

Depenses

Ventes

Recette

01/03/2008

200.00 €

2 000.00 €

1 800.00 €

02/03/2008

200.00 €

2 000.00 €

1 800.00 €

03/03/2008

0.00 €

3 000.00 €

3 000.00 €

04/03/2008

0.00 €

0.00 €

0.00 €

05/03/2008

0.00 €

0.00 €

0.00 €


DONT L' EXPESSION EST :

SELECT X_DATES.xDate, IIf(IsNull([Z_DEPENSES]![dDate]),0,[SommeDeDep_Total]) AS Depenses, IIf(IsNull([Z_VENTES]![vDate]),0,[SommeDeS_Total]) AS Ventes, [Ventes]-[Depenses] AS Recette
FROM (X_DATES LEFT JOIN Z_DEPENSES ON X_DATES.xDate = Z_DEPENSES.dDate) LEFT JOIN Z_VENTES ON X_DATES.xDate = Z_VENTES.vDate;

Cette 3 ième requete sera conçue de la même façon que celle
proposée dans la première m"thode.Sauf qu' au lieu de lier
X_DATE à table depense et table vente, elle sera liées aux nouvelles requetes Z_VENTES et Z_DEPENSES.

PS: Pardon donc !
j'avais totalement oublié que c' est de cette façon que moi même
j' ai procèdé dans mon cas.
Dans mes précédentes réponse j' ai proposé la solution de mémoire.



... Y'en a même qui disent qu'ils l'ont vu voler.



/PRE>
mercredi 12 mars 2008 à 19:43:22 | Re : Besoin d'aide, requete, Access

good speed

Merci encore Libre Max  pour  ta reponse, et puis c'est sans importance pour le probleme d'incompréhension de mon probleme depuis le depart..., finalement j'ai pu obtenir les resultats escomptés grace à ta méthode, cependant, tu m'excuses mais je trouve la solution tres compliquées, or afin d'aboutir au resultat des recettes il faudra activer les deux requetes Z_vente et Z_depense  puis d'executer la requete Recette, pire encore, j'ai essayé d'ajouter une entrée pour la journée du  4/03/08 à chacune des deux tables vente et depenses puis j'ai executé les requetes Z_vente et Z_depense puis la requete Recette et au final aucun resultat pour la journée du 4/3/08.

Avant de poster mon problem sur ce forum j'ai pu aboutir à mes fins en ayant recours à deux requetes et sans aucune relation pour les tables, et en esperant resoudre mon probleme avec une seule requete me voici avec trois, vraiment je commence à désespérer d'ACCESS, je voudrais juste qu'à la fin de la journée en executant une requete ou en cliquant sur un bouton de commande sur mon formulaire vente avoir le total de la recette du jour, ou est vraiment toute la puissance d'ACCESS dans tout ca ainsi que son AUTOMATION, en tout cas merci bien à toi Libre Max, et puis si seulement on pouvait me montrer une solution plus elegante à mon probleme ca serais bien.

Merci.


Health & Peace
jeudi 13 mars 2008 à 16:48:49 | Re : Besoin d'aide, requete, Access

crn_c21

Peut etre une solution pour toi :

SELECT XDate,VEN.Vente,DEP.Depense,
CASE WHEN VEN.Vente Is Null Then
   CASE WHEN DEP.Depense Is Null THEN 0 ELSE 0-DEP.Depense END
ELSE
   CASE WHEN DEP.Depense Is Null THEN VEN.Vente ELSE VEN.Vente-   DEP.Depense END
END AS Recette
FROM XDates D
LEFT OUTER JOIN (SELECT vDATE,Sum(S_TOTAL)As Vente FROM VENTES GROUP BY vDate) AS VEN On VEN.VDate=D.xDate
LEFT OUTER JOIN (SELECT dDate,Sum(Total_Depense) As Depense GROUP BY dDate) as DEP On DEP.dDate=D.xDate

ça doit marcher!

jeudi 13 mars 2008 à 17:11:51 | Re : Besoin d'aide, requete, Access

LIBRE_MAX

Bonjour,

 il faudra activer les deux requetes Z_vente et Z_depense  puis d'executer la requete Recette.
Non, En exécutant Recette, les deux requetes Z_vente et Z_depense s' éxécuteront d' elles mêmes puisqu' elles font parties de la requetes Recette.ça se fait de façon implicite.

Fais des entrées dans vente et dans Depense et éxécutes uniquement Recette, tu verras que tes nouvelles entrées y figurerent. A condition bien sûr de  mettre à jour ta table X_Dates avec toutes les dates souhaitées.Y compris celles nouvellement ajoutées.C 'est le principe de X_Dates.Il faut toujours la mettre à jour.

 

                        



... Y'en a même qui disent qu'ils l'ont vu voler.



/P>

1 2

Cette discussion est classée dans : date, requete, total, vente, depenses


Répondre à ce message

Sujets en rapport avec ce message

une requete qui me casse la tête [ par chmouette ] Salut les gens!Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :+-------------------------+ !            MaTable  &nbs Comment effectuer une requete sql avec un test de différence de date ? [ par paddybl ] bonsoir,voilà mon problémej'ai une table sql server avec un champ date de type dd/jj/aaaaje souhaite faire une requete sql avec comme condition, "trou Probleme de date [ par fatbulle ] Bonjour, Je dois selectionner dans une table les évenements qui ont lieu aujourd'hui ET les jour requete avec date [ par nawal59 ] salut,SELECT Table1.Aide, Table1.NumDossier, Table1.TypeDemAccomp,Table1.dateFicheEtabli, Table1.date1ercontact, Table1.nom, Table1.nomJeuneFille, Tab help urgent requete oracle je mouline !!!! [ par tommie ] bonjour j'ai un petit soucis avec une requete sous oracle, je vous explique le probleme:j'ai trois tables de la forme:-- TABLE SALARIE: CREATE TABLE S XML et Requete [ par blueangel ] blueangel12@yahoo.com       13/02/2006<b requete sql access pour les dates [ par Rjoe ] Bonjour Developpant une application pour la gestion des commandes j'ai été surpris en voyant qu'avec la requete sur ACCESS 2000SELECT COMMANDE.*FROM C requete date [ par Rjoe ] bonjour ma question est la suivantedans mon aplication je souhaite faire une verification pour un mois courant ,or, il se peut que ce mois soit févrie requete qui fonctionne en local et pas en distant [ par gomoz ] Voici la coupable :<span class="syn Probleme avec une requete HELP ME [ par ronnie95 ] Bonjours a tous,J'ai un probleme avec une requete :j'ai 1 table Reglement(id_reglement,type-reglement,montant,date)Je voudrais afficher la liste des s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales