Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 10h55   #1
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Par défaut Division sur une requête SQL

Bonjour,

J'ai encore besoin de votre aide.

J'aimerai effectuer une division dans une requête SQL, et je n'arrive pas à trouver le bon résultat.
1) J'ai une requête avec la somme des Qté produit par mois :
Nom de la requête =>>rqyIndicateurT1QtéProd
Code :
1
2
3
4
5
6
 
SELECT Format([tblProduction]![DateProduction],"yyyy/mm") AS M, tblMachine.NomMachine, Sum(tblProductionQte.Qté) AS Qté
FROM ((tblMachine INNER JOIN tblProduction ON tblMachine.Idmachine=tblProduction.idMachine) INNER JOIN (tblFamilleProduction INNER JOIN tblProduit ON tblFamilleProduction.IdFamilleProd=tblProduit.idFamilleProd) ON tblMachine.Idmachine=tblProduit.Idmachine) INNER JOIN tblProductionQte ON (tblProduction.Idproduction=tblProductionQte.Idproduction) AND (tblProduit.IdProduit=tblProductionQte.Idproduit)
WHERE (((tblFamilleProduction.IdFamilleProd)=3 Or (tblFamilleProduction.IdFamilleProd)=14 Or (tblFamilleProduction.IdFamilleProd)=15))
GROUP BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine
ORDER BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine;
2)J'ai une requête avec la somme des Temps Direct produit par mois :
Nom de la requête =>>rqyIndicateurT1TpsDirect
Code :
1
2
3
4
5
6
 
SELECT Format([tblProduction]![DateProduction],"yyyy/mm") AS M, tblMachine.NomMachine, Sum(tblProduction.TpsDirect) AS SommeDeTpsDirect
FROM ((tblMachine INNER JOIN tblProduction ON tblMachine.Idmachine = tblProduction.idMachine) INNER JOIN (tblFamilleProduction INNER JOIN tblProduit ON tblFamilleProduction.IdFamilleProd = tblProduit.idFamilleProd) ON tblMachine.Idmachine = tblProduit.Idmachine) INNER JOIN tblProductionQte ON (tblProduit.IdProduit = tblProductionQte.Idproduit) AND (tblProduction.Idproduction = tblProductionQte.Idproduction)
WHERE (((tblFamilleProduction.IdFamilleProd)=3 Or (tblFamilleProduction.IdFamilleProd)=14 Or (tblFamilleProduction.IdFamilleProd)=15))
GROUP BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine
ORDER BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine;
Là tous se déroule bien, j'ai bien mes totaux

3) J'ai une requête qui téhoriquement devrait m'effectuer la DIVISION de la Qté de la 1er requête avec la SommeDeTpsDirect de la 2ème requête
Nom de la requête =>>rqyQtéProd/TpsDirect
Code :
1
2
3
4
 
SELECT rqyIndicateurT1QtéProd.M, rqyIndicateurT1TpsDirect.NomMachine, [rqyIndicateurT1QtéProd]![Qté]/[rqyIndicateurT1TpsDirect]![SommeDeTpsDirect] AS QtéProd
FROM rqyIndicateurT1QtéProd INNER JOIN rqyIndicateurT1TpsDirect ON rqyIndicateurT1QtéProd.M = rqyIndicateurT1TpsDirect.M
ORDER BY rqyIndicateurT1QtéProd.M;
J'ai essayé plusieurs syntaxes, et je n'arrive pas à faire mon calcul correctement.
je n'ai pas trouvé (où surement mal cherché) un tuto concernnat les expressions de calcul dans une requête SQL.

Merci d'avance de votre aide
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 12h49   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Rch05,

Le signe "/" est bien celui à utiliser pour diviser deux valeurs numériques.

Plusieurs précautions, donc :
- il faut deux valeurs numériques ;
- dans une division A/B, il faut que B soir différent de 0 (à tester par un VraiFaux).

Quel est le message produit par ta requête ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h11   #3
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonjour Richard_35,

La requête s'exécute bien.
Mais le résultat, n'est pas celui que j'attendais
Ci-joint un document avec le résultat des différentes requêtes.

Merci de ton aide

Christian
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h49   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut Christian,

Ne peux-tu pas faire cela en une seule requête ?

Etant donné que tes 2 premières requêtes sont construites de la même manière :
Code sql :
1
2
3
4
5
6
 
SELECT Format([tblProduction]![DateProduction],"yyyy/mm") AS M, tblMachine.NomMachine, Sum(tblProductionQte.Qté) AS Qté, Sum(tblProduction.TpsDirect) AS SommeDeTpsDirec, Sum([tblProductionQte].[Qté])/Sum([tblProduction].[TpsDirect]) AS QtéProd
FROM tblProduction INNER JOIN ((tblFamilleProduction INNER JOIN (tblMachine INNER JOIN tblProduit ON tblMachine.Idmachine = tblProduit.Idmachine) ON tblFamilleProduction.IdFamilleProd = tblProduit.idFamilleProd) INNER JOIN tblProductionQte ON tblProduit.IdProduit = tblProductionQte.Idproduit) ON (tblMachine.Idmachine = tblProduction.idMachine) AND (tblProduction.Idproduction = tblProductionQte.Idproduction)
WHERE (((tblFamilleProduction.IdFamilleProd)=3 OR (tblFamilleProduction.IdFamilleProd)=14 OR (tblFamilleProduction.IdFamilleProd)=15))
GROUP BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine
ORDER BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine;

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/03/2011, 14h03   #5
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Bonjour Denis,

Vraiment tu es trop fort.
Depuis ce matin, je me casse les méninges pour avoir ce taux de service avec ses 2 sous/requêtes.
J'avais la solution devant les YEUX , et toi en peu de temps tu as cerné la solution.BRAVO

Merci Denis et à bientôt

Christian
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 14h06   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Je ne suis pas trop fort,
j'ai juste gardé une partie de ta base sur mon disque, j'ai juste testé la requête
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 14h08   #7
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Code sql :
1
2
3
SELECT rqyIndicateurT1QtéProd.M, rqyIndicateurT1TpsDirect.NomMachine, [rqyIndicateurT1QtéProd]![Qté]/[rqyIndicateurT1TpsDirect]![SommeDeTpsDirect] AS QtéProd
FROM rqyIndicateurT1QtéProd INNER JOIN rqyIndicateurT1TpsDirect ON rqyIndicateurT1QtéProd.M = rqyIndicateurT1TpsDirect.M
ORDER BY rqyIndicateurT1QtéProd.M;
Il semble manquer une liaison entre "NomMachine" des deux requêtes.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 14h14   #8
Membre habitué
 
Homme Christian Roignot
Logisticien
Inscription : janvier 2009
Messages : 308
Détails du profil
Informations personnelles :
Nom : Homme Christian Roignot
Âge : 59
Localisation : France

Informations professionnelles :
Activité : Logisticien
Secteur : Industrie

Informations forums :
Inscription : janvier 2009
Messages : 308
Points : 112
Points : 112
Merci Richard.
Denis m'a donné la solution avec une seule requête.

Bonne journée à tous les deux

Christian
rch05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h18.


 
 
 
 
Partenaires

Hébergement Web