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 :

Query, sum over fields that have the same ID as the active field


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Query, sum over fields that have the same ID as the active field
    Hi,

    pretty simple problem I think that I've not been able to solve yet. A query calls up all orders, each has unique ID, and also calls up a AdvancementStatus table linked in a one to many relationship. One OrderID can have a several AdvancementStatus lines. I want to sum the percents in the AdvancementStatus table for each OrderID. is there a way to do that without a another query?

    thanks,

    Piers

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Requete: Sommer sur les champs dont un ID est identique au champ actif
    Salut,

    je pense qu'il s'agit d'un exercice très courant, mais je ne sais comment le résoudre sans créer des sous requetes (ce que je suis en train de faire du coup).

    J'ai deux tables liées en une a plusieurs. Je voudrais sommer un champ de la table 1 sur toutes les entrées liées a la table plusieurs. C'est clair? Par exemple Fournisseur qui peut etre lié a plusieurs Produit. Sommer les prix de tous les produits de ce fournisseur dans la requete directement. Mais sans regrouper par fournisseur. Chaque produit gardera une ligne distincte dans ma requete.

    merci d'avance;

    Piers

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    You can do a simple query based on the Two tables grouping the OrderId field, and performing the sum of your percentile.

    Btu, just a question : Why did you wrote this question in english due to your faculty to write in french in your previous posts ?
    You're here in a french forum.
    Please, speak french

    thx !

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Je commence a vraiment ne plus rien comprendre a ce forum

    Désolé pour le premier post en anglais, c'était par erreur. Ensuite j'ai cru que mon message a été effacé et j'ai reposté en francais (assez corect j'espère!). Maintenant il ne reste plus que mon post en anglais. Ca devient bien plus compliqué qu'access!

    Ma question était je crois mieux formulée la deuxième fois; ce que j'essaye de faire est simple, mais je voudrais m'économiser une requete supplémentaire, et n'ayant pas réussi je voulais savoir si c'est possible. du style sommer sur "si tel ID est égal à l'ID ou je me trouve alors valeur sinon null"

    Merci de votre patience.

    Pier,s

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re-bonjour

    Comme tu peux le lire dans la rubrique Editorial, le forum est en restructuration, je crois avoir vu ta discussion dans le sous-forum "Requêtes et SQL".

    Starec

  6. #6
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Salut,

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Fournisseur.Fournisseur, Produits.Article, Sum(Produits.Prix) AS SommeDePrix
    FROM Fournisseur LEFT JOIN Produits ON Fournisseur.Fournisseur = Produits.Fournisseur
    GROUP BY Fournisseur.Fournisseur, Produits.Article;

    Mais d'après ce que je comprend:

    Citation Envoyé par piers
    Par exemple Fournisseur qui peut etre lié a plusieurs Produit. Sommer les prix de tous les produits de ce fournisseur dans la requete directement. Mais sans regrouper par fournisseur. Chaque produit gardera une ligne distincte dans ma requete
    Si Fournisseur A , a 2 lignes sur un Produit X et que tu veux garder ces deux lignes , il serait judicieux de se diriger sur la conception d'un Etat.

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    merci pour la réponse,

    Code SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Fournisseur.Fournisseur, Produits.Article, Sum(Produits.Prix) AS SommeDePrix FROM Fournisseur LEFT JOIN Produits ON Fournisseur.Fournisseur = Produits.Fournisseur GROUP BY Fournisseur.Fournisseur, Produits.Article;
    mais, ce que je veux c'est autre chose qu'une somme / regroupement. le regroupement ne me permettra pas de garder les lignes (et donc le reste de l'info distinct, par exemple disons, le poids de chaque produit ).

    peut etre n'est ce simplement pas faisable, et je découvre les possibilités/règles d'access/SQL petit a petit.

    Piers

  8. #8
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    C'est extrêmement facile à faire.
    J'ai écrit un tutoriel sur les requêtes, relations et jointures.
    Tu peux le trouver ici :
    http://mhubiche.developpez.com/Access/tutoJointures/

    En fait, il faut faire une jointure externe sur tes deux tables, et sommer les valeurs pour l'ID, comme je te l'indiquais plus haut, en sommand les pourcentages.

    Un truc dans ce goût là !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT Orders.ID, Sum(AdvancementStatus.Percent) as total
    FROM Orders LEFT JOIN AdvancementStatus On Orders.ID = AdvancementStatus.OrderID
    WHERE Orders.ID = 1
    GROUP BY Orders.ID

  9. #9
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    il serait judicieux de se diriger sur la conception d'un Etat.

  10. #10
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Désolé Piers, mais j'ai dû fusionner les deux threads que tu avais lancé.
    C'est assez dur de se retrouver à suivre 2 discussions en meêm temps.

    Citation Envoyé par Piers
    mais, ce que je veux c'est autre chose qu'une somme / regroupement. le regroupement ne me permettra pas de garder les lignes (et donc le reste de l'info distinct, par exemple disons, le poids de chaque produit ).
    Une requête ne supporte pas plusieurs niveaux de regroupement.

    Tu peux faire un état, basé sur ta source, et, dans cet état, demander des sous-totaux.
    Je t'invite à essayer simplement, au début, à l'aide d'un assistant.

    Mais le conseil de l'état t'a déjà été donné

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2015, 19h24
  2. [2.x] Entities passed to the choice field must have a "__toString()"
    Par pingolitipus dans le forum Symfony
    Réponses: 12
    Dernier message: 17/05/2012, 12h34
  3. Réponses: 4
    Dernier message: 25/04/2011, 14h58
  4. Réponses: 4
    Dernier message: 29/09/2004, 09h05

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