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

OpenOffice & LibreOffice Discussion :

Somme dans une requete dans un formulaire.


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre régulier
    Homme Profil pro
    Second de cuisine
    Inscrit en
    Avril 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Second de cuisine
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2005
    Messages : 193
    Points : 99
    Points
    99
    Par défaut Somme dans une requete dans un formulaire.
    Hello !

    Petit soucis avec mon formulaire !
    J'ai une table avec des ingrédients d'une recette (nom, qté, unité)
    J'ai une table avec les ingrédients (nom, prix unitaire ht, tva)
    Dans mon formulaire je selectionne donc ces deux tables pour avoir une liste des ingrédients de ma recette; de plus, j'y ai ajouté pour chaque ingrédient le prix total ht, le prix total avec taxes

    J'aimerais maintenant ajouter au formulaire, d'autres chiffres comme la somme des prix total ht, et de meme avec ceux avec taxes, et encore d'autres ^^
    Donc ... sum() ?

    Voici la requete: http://pastebin.com/kRpnwmXi
    Voici l'erreur:
    Statut SQL: 37000
    Code d'erreur: -67

    Not in aggregate function or group by clause: org.hsqldb.Expression@d4785a in statement [SELECT "recipes_ingredients"."ID", "recipes_ingredients"."recipe_id", "recipes_ingredients"."name", "recipes_ingredients"."quantity", "recipes_ingredients"."unit", "goods"."price", "recipes_ingredients"."quantity" * "goods"."price" AS "ptht", "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100 AS "ptat", SUM( "recipes_ingredients"."quantity" * "goods"."price" ) AS "ptht_sum", SUM( "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100 ) AS "ptat_sum" FROM "recipes_ingredients", "goods" WHERE "recipes_ingredients"."name" = "goods"."name" GROUP BY "recipes_ingredients"."ID", "recipes_ingredients"."recipe_id", "recipes_ingredients"."name", "recipes_ingredients"."unit"]
    Que faut-il changer à mon code SQL ? :O
    Si je veux rajouter d'autres champs calculés, avec une liaison entre le nombre de couverts qui est affiché dans un champs du formulaire:
    ptht_sum / mon_formulaire.nombre_de_couverts (qui vient de recipes.couverts)
    Comment faire ?!

    En piece jointe, la base de donnée: cooking.zip

    Merci

    nico

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Ton code est faux, car tu ne peux pas faire dans la même requête à la fois le détail et la somme :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "recipes_ingredients"."quantity" * "goods"."price" AS "ptht",
    "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100 AS "ptat",
    SUM( "recipes_ingredients"."quantity" * "goods"."price" ) AS "ptht_sum",
    SUM( "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100 ) AS "ptat_sum"

    Ensuite dans ton regroupement, il te faut les lignes suivantes :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "recipes_ingredients"."quantity" * "goods"."price",
    "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100

    @+.

  3. #3
    Membre régulier
    Homme Profil pro
    Second de cuisine
    Inscrit en
    Avril 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Second de cuisine
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2005
    Messages : 193
    Points : 99
    Points
    99
    Par défaut
    D'accord.

    Alors comment je peux faire pour faire le calcul; la somme de chaque calcul, etc ?

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    En décomposant la requête en plusieurs :
    • une requête qui fait la liste ;
    • une requête qui fait la somme ;
    • une requête qui fait le lien avec les deux autres.


    @+.

  5. #5
    Membre régulier
    Homme Profil pro
    Second de cuisine
    Inscrit en
    Avril 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Second de cuisine
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2005
    Messages : 193
    Points : 99
    Points
    99
    Par défaut
    Le truc c'est que que la requete un va calculer un deux champs pour chaque enregistrement
    La requete deux, comment faire pour quelle calcule la somme de chaque champs de chaque enregistrement ? :O
    La troisieme je ne vois pas du tout a quoi elle sert...

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Voici la requête 1 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT
        "recipes_ingredients"."ID",
        "recipes_ingredients"."recipe_id",
        "recipes_ingredients"."name",
        "recipes_ingredients"."quantity",
        "recipes_ingredients"."unit",
        "goods"."price",
        "recipes_ingredients"."quantity" * "goods"."price" AS "ptht",
        "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100 AS "ptat"
    FROM
        "recipes_ingredients",
        "goods"
    WHERE
        "recipes_ingredients"."name" = "goods"."name"

    La requête 2 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT
        "recipes_ingredients"."ID",
        "recipes_ingredients"."recipe_id",
        "recipes_ingredients"."name",
        SUM( "recipes_ingredients"."quantity" * "goods"."price" ) AS "ptht_sum",
        SUM( "recipes_ingredients"."quantity" * "goods"."price" * "goods"."vat" / 100 ) AS "ptat_sum"
    FROM
        "recipes_ingredients",
        "goods"
    WHERE
        "recipes_ingredients"."name" = "goods"."name"
    GROUP BY
        "recipes_ingredients"."ID",
        "recipes_ingredients"."recipe_id",
        "recipes_ingredients"."name"

    Et la requête 3 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT
        "requete1"."ID",
        "requete1"."recipe_id",
        "requete1"."name",
        "requete1"."quantity",
        "requete1"."unit",
        "requete1"."price",
        "requete1"."ptht",
        "requete1"."ptat",
        "requete2"."ptht_sum",
        "requete2"."ptat_sum"
    FROM
        "requete1",
        "requete2"
    WHERE
        "requete1"."ID" = "requete2"."ID" 
        and "requete1"."recipe_id" = "requete2"."recipe_id"
        and "requete1"."name" = "requete2"."name"

    @+.

  7. #7
    Membre régulier
    Homme Profil pro
    Second de cuisine
    Inscrit en
    Avril 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Second de cuisine
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2005
    Messages : 193
    Points : 99
    Points
    99
    Par défaut
    Ahh je vois !
    Je ne savais pas qu'on pouvais selectionner une requete comme cela !

    Mais pour le coup, la fonction SUM() ne renvoie que le premier enregistrement de la requete un > ptht

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    La seconde requête te fait la somme de tout les names. Mais ne sachant pas à quoi correspond réellement tous les champs, il se peut qu'il faille supprimer les "recipes_ingredients"."ID", "recipes_ingredients"."recipe_id".

    @+.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2011, 17h15
  2. [MySQL] une requete dans une requete
    Par ots2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2011, 09h49
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Sommes dans une requete d'un formulaire
    Par moto25 dans le forum Access
    Réponses: 7
    Dernier message: 14/11/2005, 18h46
  5. Utilisation d'une requete dans une requete update
    Par hellbilly dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2005, 15h09

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