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 :

Requête avec somme et calculs


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut Requête avec somme et calculs
    Bonjour,

    J'ai une requête dans Access qui calcule des montants à partir d'un taux horaire et un nombre d'heures.
    Pour un contrat j'obtiens plusieurs versements, et je souhaite en faire la somme pour chaque contrat. Or le SUM ne passe pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT PAIEMENT.[Code contrat], PAIEMENT.[Date de paiement], PAIEMENT.[Date de mise paiement], SUM([Nbres heures]*PAIEMENT.[Taux] AS Montant)
    FROM [Affectation contrat vacataire] INNER JOIN PAIEMENT ON [Affectation contrat vacataire].[Affectation Contrat] = PAIEMENT.[Code contrat]
    WHERE (((PAIEMENT.[Date de mise paiement]) Between #1/1/2009# And #12/31/2009#))
    ORDER BY PAIEMENT.[Date de mise paiement], PAIEMENT.[Code contrat];
    Any idea ?

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 199
    Billets dans le blog
    47
    Par défaut
    bonjour,

    Citation Envoyé par LadyArwen
    …et je souhaite en faire la somme pour chaque contrat
    il faut donc opérer un regroupement sur les [code contrat] (cliquer sur le bouton "totaux" en mode création)

    Requête1:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    PAIEMENT.[Code contrat], 
    SUM([Nbres heures]*PAIEMENT.[Taux] AS Montant
    FROM [Affectation contrat vacataire] INNER JOIN PAIEMENT 
    ON [Affectation contrat vacataire].[Affectation Contrat] = PAIEMENT.[Code contrat]
    WHERE (((PAIEMENT.[Date de mise paiement]) Between #1/1/2009# And #12/31/2009#))
    GROUP BY PAIEMENT.[Code contrat];

    puis avoir les autres champs, tu peux créer une deuxième requête de sélection avec la jointure sur [Code Contrat] :
    Requête1----------[Affectation contrat vacataire]
    puis faire glisser tous les champs souhaités [CodeContrat], Montant, [Date de mise paiement], etc...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Ok, la première requête fonctionne, il manquait juste une parenthèse de fermeture pour SUM() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    PAIEMENT.[Code contrat], 
    SUM([Nbres heures]*PAIEMENT.[Taux]) AS Montant
    FROM [Affectation contrat vacataire] INNER JOIN PAIEMENT 
    ON [Affectation contrat vacataire].[Affectation Contrat] = PAIEMENT.[Code contrat]
    WHERE (((PAIEMENT.[Date de mise paiement]) BETWEEN #1/1/2009# And #12/31/2009#))
    GROUP BY PAIEMENT.[Code contrat];
    Je vais tenter de faire la 2e requête, la dernière fois que j'ai essayé en 2 requêtes Access m'a jeté, mais de toute manière je vais sans doute mettre ça en PHP sur l'Intranet pour générer un tableau Excel avec formulaire pour saisie des dates.
    Merci du coup de main, je reviens donner des news + tard

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Bon voilà mes 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Liste des contrats vacataires
    SELECT VACATAIRES.Nom, VACATAIRES.Prénom, VACATAIRES.Statut, [Affectation contrat vacataire].[Affectation Contrat], [Affectation contrat vacataire].[Code Action]
    FROM VACATAIRES INNER JOIN [Affectation contrat vacataire] ON VACATAIRES.[Code vacataire] = [Affectation contrat vacataire].[Code Vacataire]
    GROUP BY VACATAIRES.Nom, VACATAIRES.Prénom, VACATAIRES.Statut, [Affectation contrat vacataire].[Affectation Contrat], [Affectation contrat vacataire].[Code Action]
    ORDER BY VACATAIRES.Nom, VACATAIRES.Prénom;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Liste des montants payés par contrat
    SELECT PAIEMENT.[Code contrat], SUM([Nbres heures]*PAIEMENT.[Taux]) AS Montant
    FROM [Affectation contrat vacataire] INNER JOIN PAIEMENT ON [Affectation contrat vacataire].[Affectation Contrat] = PAIEMENT.[Code contrat]
    WHERE (((PAIEMENT.[Date de mise paiement]) BETWEEN #1/1/2009# And #12/31/2009#))
    GROUP BY PAIEMENT.[Code contrat];

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    J'avance...
    J'ai désormais une page php avec 2 zones de saisie [date1] et [date2].

    La page s'affiche si je supprime la condition where (en gras dans le code) se rapportant aux dates dans la requête.
    Lorsque je la rajoute j'obtiens l'erreur.
    Warning: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère., SQL state 22005 in SQLExecDirect in f:\intranet\serfages\paiements.php on line 50

    Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in f:\intranet\serfages\paiements.php on line 54
    J'ai même tenté en rajoutant les # si chers à Access pour mentionner des dates dans ses requêtes mais même erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (isset($_GET["date1"])){
    $date1='#'.$_GET["date1"].'#';
    if (isset($_GET["date2"])) $date2='#'.$_GET["date2"].'#';
    
    require("functions.php");
    
    
    echo $date1;
    echo '<br/>';
    echo $date2;
    $listeMontants="SELECT PAIEMENT.[Code contrat] AS idContrat, SUM([Nbres heures]*PAIEMENT.[Taux]) AS Montant
    FROM [Affectation contrat vacataire] INNER JOIN PAIEMENT ON [Affectation contrat vacataire].[Affectation Contrat] = PAIEMENT.[Code contrat]
    WHERE (((PAIEMENT.[Date de mise paiement]) BETWEEN '$date1' And '$date2'))
    GROUP BY PAIEMENT.[Code contrat]";
    #01/01/2008#
    #31/12/2008#
    Warning: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère., SQL state 22005 in SQLExecDirect in f:\intranet\serfages\paiements.php on line 50

    Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in f:\intranet\serfages\paiements.php on line 54

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 199
    Billets dans le blog
    47
    Par défaut
    bon ben étant donné que PHP j'ai à peine effleuré...

    En ce qui concerne ta requête, est-ce que tu peux récapituler les tables &champs du schéma relationnel?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ...SUM([Nbres heures]*PAIEMENT.[Taux]) AS Montant
    [Nbres heures] est dans la table PAIEMENT ?

    Et en passant si tu pouvais donner un exemple de ce que doit retourner la requête, j'ai un doute. Est-ce qu'elle doit retourner une seule ligne par vacataire ? Ou plusieurs (les différents paiements par vacataire) ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête avec calcul de somme
    Par btssouma dans le forum JPA
    Réponses: 4
    Dernier message: 21/09/2012, 16h07
  2. [AC-2003] Requête avec un champ calculé et des conditions dans le calcul ?
    Par [ZiP] dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 30/01/2010, 10h58
  3. Critères avec opérateurs dans une requête avec des champs calculés
    Par lmollard dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/05/2008, 18h53
  4. Calcul requête avec conditions multiples
    Par Phullbrick dans le forum Access
    Réponses: 7
    Dernier message: 18/04/2006, 13h45
  5. Requête avec reqroupent compte et somme
    Par abdallahi dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/12/2005, 12h42

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