IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Calcul dans une sous requête


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Calcul dans une sous requête
    Bonjour a tous,

    Dans une requête je doit calculer un taux de conformité(en %), plus précisément je récupère le nombre de pièce analysé et le nombre de pièce non conforme pour calculer un taux de conformité.

    Ici j’implémente une nouvelle fonctionnalité avec un argument nommé laps. Le fonctionnement de la fonction est la suivante : l'utilisateur choisi une date de début et de fin pour sa période d'analyse puis il rentre une valeur pour l’argument laps. Ma fonction est donc censé calculer 2 taux celui de date de début -> date de fin et date de début -> date de début + laps. Puis je compare ces deux taux pour afficher des flèches de progression/stagnation/régression.

    Pour cela je calcule le premier taux (celui la fonctionne) et dans une sous requête j'ai tenté de calculer le taux selon le laps choisi, j'obtiens le taux de -1 pour chacun des différents secteurs (îlot ). Le problème auquel je me heurte est que ma sous requête nécessite que je calcule le nb de point audité et le nb de point non conforme (NC) a l’intérieur de celle ci donc je ne sais pas comment attribué la valeur du taux conforme sur laps a l'aide d'un AS. De plus je n'arrive pas a changer la valeur du temps (date debut -> date debut + laps)

    Voici mon code :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT Secteurs.Secteur, Sum([5S].Compteur*10+([5S].[NA1]+[5S].[NA2]+[5S].[NA3]+[5S].[NA4]+[5S].[NA5]+[5S].[NA6]+[5S].[NA7]+[5S].[NA8]+[5S].[NA9]+[5S].[NA10])) AS [Nb points audités], [Nb points audités]+Sum([5S].[Pt1]+[5S].[Pt2]+[5S].[Pt3]+[5S].[Pt4]+[5S].[Pt5]+[5S].[Pt6]+[5S].[Pt7]+[5S].[Pt8]+[5S].[Pt9]+[5S].[Pt10]) AS [Nb points NC], (1-[Nb points NC]/[Nb points audités]) AS [Taux conforme],
    EXISTS 
    (SELECT Sum([5S].Compteur*10+([5S].[NA1]+[5S].[NA2]+[5S].[NA3]+[5S].[NA4]+[5S].[NA5]+[5S].[NA6]+[5S].[NA7]+[5S].[NA8]+[5S].[NA9]+[5S].[NA10])) AS [Nb points audités], 
    [Nb points audités]+Sum([5S].[Pt1]+[5S].[Pt2]+[5S].[Pt3]+[5S].[Pt4]+[5S].[Pt5]+[5S].[Pt6]+[5S].[Pt7]+[5S].[Pt8]+[5S].[Pt9]+[5S].[Pt10]) AS [Nb points NC], (1-[Nb points NC]/[Nb points audités]) AS [Taux conforme sur laps]
    FROM 5S INNER JOIN Secteurs ON [5S].Secteur = Secteurs.N° 
    WHERE (([VarTemp]![5S_DEB]<=[5S]!Date) And ([VarTemp]![5S_FIN]>=[5S]!Date) And Secteurs.Type=TempVars!TYP_SEC) And ([VarTemp]![5S_FIN]=[VarTemp]![5S_DEB] +  [5S]!Laps) ), IIf([Taux conforme]<[Taux conforme sur laps],"m",IIf([Taux conforme]=[Taux conforme sur laps],"g","k")) AS Fleches
    FROM 5S INNER JOIN Secteurs ON [5S].Secteur = Secteurs.N°
    WHERE (([VarTemp]![5S_DEB]<=[5S]!Date) And ([VarTemp]![5S_FIN]>=[5S]!Date) And Secteurs.Type=TempVars!TYP_SEC)
    GROUP BY Secteurs.Secteur
    ORDER BY Secteurs.Secteur;

    J'ai surligné en rouge la ligne que je n'arrive pas a traiter correctement,

    Cdlt,

    PSlayeur

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour a tous,

    Finalement j'ai opté pour une création d'une deuxième requête, plus simple a mon gout. Je calcule donc mon deuxième taux (en fonction du laps définis par l'utilisateur). J'aurais 2 questions, la nouvelle requête me renvoie une erreur 3270 (fonctions utilisée avec un nombre d'arguments incorrect dans l'expression) pourquoi cela ?
    Deuxièmement est il possible d’exécuter plusieurs requête a l'aide d'une macro et de récupérer respectivement [taux conforme] et [taux conforme sur laps] afin de les comparer pour calculer les flèches de progression/stagnation/régression dans mon état ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT Sum([5S].Compteur*10+([5S].[NA1]+[5S].[NA2]+[5S].[NA3]+[5S].[NA4]+[5S].[NA5]+[5S].[NA6]+[5S].[NA7]+[5S].[NA8]+[5S].[NA9]+[5S].[NA10])) AS [Nb points audités], 
    [Nb points audités]+Sum([5S].[Pt1]+[5S].[Pt2]+[5S].[Pt3]+[5S].[Pt4]+[5S].[Pt5]+[5S].[Pt6]+[5S].[Pt7]+[5S].[Pt8]+[5S].[Pt9]+[5S].[Pt10]) AS [Nb points NC], (1-[Nb points NC]/[Nb points audités]) AS [Taux conforme sur laps]
    FROM 5S INNER JOIN Secteurs ON [5S].Secteur = Secteurs.N° 
    WHERE ( [5S]!Date BETWEEN ([VarTemp]![5S_DEB] And DATEADD ([VarTemp]![5S_DEB], [VarTemp]![5S_Laps])) And Secteurs.Type=TempVars!TYP_SEC))
    PS: J'ai oublié de le préciser dans mon message précédent mais TYP_SEC a pour valeur 1 (qui correspond a un certain type de chaine de production )

    Cdlt,

    PSlayeur

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    1- Je dirais que DateAdd a besoin de 3 arguments or dans votre requête vous n'en avez mis que 2.
    2- Oui, il est possible d'exécuter 2 requêtes dans une macro ou code VBA, mais j'ai des doutes en voyant le code SELECT dans votre requête. Qu'est-ce que vous entendez par "EXECUTER UNE REQUETE"

    Cordialement

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    1-Merci de votre réponse, en effet il manquait un argument pour ce qui est du dateadd petite erreur de ma part

    2- J'aimerais exécuter 2 requêtes, la première étant présente dans mon premier message avec le calcul du taux conforme et de l'attribution des valeur au champs smiley, le deuxième étant celle ou je calcule mon taux conforme sur laps et ou j'attribue les valeurs au champs flèche, mais j'ai besoin que les deux s’exécutent afin de pouvoir faire cette dernières attribution de valeurs (vu que mon calcul nécessite taux conforme et taux conforme sur laps). J’espère avoir été plus clair

    Cdlt,

    PSlayeur

Discussions similaires

  1. Order by dans une sous requête
    Par KRis dans le forum SQL
    Réponses: 7
    Dernier message: 31/10/2008, 15h29
  2. inserer un critere dans une sous requête
    Par Myogtha dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/02/2008, 16h53
  3. Passer un paramètre dans une sous-requête
    Par Lucier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/10/2007, 10h07
  4. Contourner le non-support de limit dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/09/2007, 10h45
  5. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo