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 :

Erreur dans requête : blabla fonction d'agrégat


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut Erreur dans requête : blabla fonction d'agrégat
    Bonjour,

    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_Tournees.NumTournee, T_Tournees.DateTournee, T_Tournees.fNumTypeTournee, T_Tournees.fNumChauffeur, T_Tournees.fNumVehicule, Sum(T_Livraisons.Montant) AS T1, Sum(T_Livraisons.DistanceParcourue) AS T2, T1-(T2*[Conso]/100*[PrixGasoil]+[Charges]*7) AS Expr1
    FROM T_Tournees INNER JOIN T_Livraisons ON T_Tournees.NumTournee = T_Livraisons.fNumTournee
    GROUP BY T_Tournees.NumTournee, T_Tournees.DateTournee, T_Tournees.fNumTypeTournee, T_Tournees.fNumChauffeur, T_Tournees.fNumVehicule;
    Mais j'ai une message d'erreur qui me dit :

    Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'T1-(T2*[Conso]/100*[PrixGasoil]+[Charges]*7)' comme une partie de la fonction d'agrégat
    Qu'est-ce que ça veut dire ?

    Je ne vois pas où je me suis trompée (les requêtes Access, ce n'est pas vraiment mon truc...), est-ce que quelqu'un peut regarder s'il vous plait ?

    Merci

    Steph

  2. #2
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    J'ai modifié ma requête, ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_Tournees.NumTournee, T_Tournees.DateTournee, T_Tournees.fNumTypeTournee, T_Tournees.fNumChauffeur, T_Tournees.fNumVehicule, Sum(T_Livraisons.Montant) AS T1, Sum(T_Livraisons.DistanceParcourue) AS T2, Sum(T_Livraisons.Montant)-(Sum(T_Livraisons.DistanceParcourue)*[Conso]/100*[PrixGasoil]+[Charges]*7) AS Expr1
    FROM T_Tournees INNER JOIN T_Livraisons ON T_Tournees.NumTournee = T_Livraisons.fNumTournee
    GROUP BY T_Tournees.NumTournee, T_Tournees.DateTournee, T_Tournees.fNumTypeTournee, T_Tournees.fNumChauffeur, T_Tournees.fNumVehicule;
    Mais j'ai toujours le même message d'erreur... quelqu'un peut-il m'aider ?

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    il faut malheureusement faire un regroupement sur les colonnes
    <[Conso]>, <[PrixGasoil>, <[Charges]> pour pouvoir les utiliser dans une expression. Le problème ne vient donc pas de <T1>, <T2>.

    Il faut passer a priori dans ton cas par 2 requetes (une première pour les regroupements), une deuxième pour les calculs liant cette première requete à la table contenant les colonnes <[Conso]>, <[PrixGasoil>, <[Charges]>.

    On peut aussi éviter la requete de regroupement en utilisant la fonction dsum() ou des sous-requetes mais c'est moins performant si tu as beaucoup d'enregistrements.


    Cordialement,

    Philippe

  4. #4
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    Bonjour,

    A vrai dire, je ne comprends pas trop cette histoire de double requête. Pourquoi faut-il faire un regroupement sur Conso, Charges et PrixGasoil ?

  5. #5
    Membre averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    Par défaut
    Re,

    Et bien finalement, j'ai fait 4 requêtes en tout... j'aurais sans doute pu en faire moins, mais au mois, ça marche, et ça ne rame pas !

    Les voici :

    1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCTROW T_Tournees.NumTournee, T_Tournees.DateTournee, T_TypeTournees.RefGPTypeTournee, T_Chauffeurs.NomChauffeur, T_Tournees.HeureDebut, T_Tournees.HeureFin, T_Tournees.Retourkm, T_Tournees.PrixGasoil, T_Chauffeurs.ChargesChauffeur, T_Vehicules.RefGPVehicule, T_Vehicules.ConsoMoyVehicule, T_Vehicules.CoutAssurance, First(T_Livraisons.fNumTournee) AS [Premier De fNumTournee], Sum(T_Livraisons.DistanceParcourue) AS [Somme De DistanceParcourue], Sum(T_Livraisons.Montant) AS [Somme De Montant], Sum(T_Livraisons.NbColis) AS [Somme De NbColis], Sum(T_Livraisons.Poids) AS [Somme De Poids], Count(*) AS [Compte De T_Livraisons]
    FROM T_Vehicules INNER JOIN (T_TypeTournees INNER JOIN ((T_Chauffeurs INNER JOIN T_Tournees ON T_Chauffeurs.NumChauffeur = T_Tournees.fNumChauffeur) INNER JOIN T_Livraisons ON T_Tournees.NumTournee = T_Livraisons.fNumTournee) ON T_TypeTournees.NumTypeTournee = T_Tournees.fNumTypeTournee) ON T_Vehicules.NumVehicule = T_Tournees.fNumVehicule
    GROUP BY T_Tournees.NumTournee, T_Tournees.DateTournee, T_TypeTournees.RefGPTypeTournee, T_Chauffeurs.NomChauffeur, T_Tournees.HeureDebut, T_Tournees.HeureFin, T_Tournees.Retourkm, T_Tournees.PrixGasoil, T_Chauffeurs.ChargesChauffeur, T_Vehicules.RefGPVehicule, T_Vehicules.ConsoMoyVehicule, T_Vehicules.CoutAssurance;

    2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT RecapTourneesInterm.NumTournee, RecapTourneesInterm.DateTournee, RecapTourneesInterm.RefGPTypeTournee, RecapTourneesInterm.NomChauffeur, -([HeureFin]-[HeureDebut])*24 AS Duree, ([Somme De DistanceParcourue]+[Retourkm])*[ConsoMoyVehicule]/100*[PrixGasoil] AS PrixTrajet, RecapTourneesInterm.ChargesChauffeur, RecapTourneesInterm.RefGPVehicule, RecapTourneesInterm.[Somme De Montant], RecapTourneesInterm.[Somme De NbColis], RecapTourneesInterm.[Somme De Poids], RecapTourneesInterm.[Compte De T_Livraisons]
    FROM RecapTourneesInterm
    ORDER BY RecapTourneesInterm.NumTournee;

    3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT RecapTourneesInterm2.NumTournee, RecapTourneesInterm2.DateTournee, RecapTourneesInterm2.RefGPTypeTournee, RecapTourneesInterm2.NomChauffeur, RecapTourneesInterm2.RefGPVehicule, ([ChargesChauffeur]*[Duree])+[PrixTrajet] AS ChargesTotales, [ChargesChauffeur]*[Duree] AS TotalChargesChauffeur, RecapTourneesInterm2.PrixTrajet, RecapTourneesInterm2.[Somme De Poids], RecapTourneesInterm2.[Somme De NbColis], RecapTourneesInterm2.[Compte De T_Livraisons], RecapTourneesInterm2.Duree, RecapTourneesInterm2.[Somme De Montant]
    FROM RecapTourneesInterm2;

    4. Et la dernière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT RecapTourneesInterm3.NumTournee, RecapTourneesInterm3.DateTournee, RecapTourneesInterm3.RefGPTypeTournee, RecapTourneesInterm3.NomChauffeur, RecapTourneesInterm3.RefGPVehicule, RecapTourneesInterm3.TotalChargesChauffeur, RecapTourneesInterm3.PrixTrajet, RecapTourneesInterm3.ChargesTotales, RecapTourneesInterm3.[Somme De Montant], [Somme De Montant]-[ChargesTotales] AS Resultat
    FROM RecapTourneesInterm3;
    Donc mon problème est résolu !

    Merci philben, de m'avoir aiguillée dans la bonne direction !

    Steph

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

Discussions similaires

  1. [MySQL] Erreur dans requête Update
    Par kikoyo dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/04/2009, 15h21
  2. Erreur dans requête SQL
    Par Gaetch dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/11/2008, 08h20
  3. [2000] Erreur dans requêtes successives
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/11/2007, 21h39
  4. Réponses: 3
    Dernier message: 24/04/2007, 14h13
  5. [sql] Erreur n'est pas fonction d'agrégat
    Par Jahprend dans le forum Access
    Réponses: 13
    Dernier message: 05/07/2006, 14h34

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