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 :

Jonction de deux feuilles de données dans une seule table


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Jonction de deux feuilles de données dans une seule table
    Bonjour à tous !

    Je viens solliciter votre aide. Je vous explique. J’importe des données dans une base Access (nom, secteur de travail, contrat, poids). Mon but serait d’obtenir une table résultat qui m’affiche le poids total et le nombre total d’équipements par secteur et par contrat. Ce qui me donnerait quelque chose comme ça :

    Secteur Contrat NombreEqui Poids Total
    Secteur1 Contrat1 4000 70000
    Secteur1 Contrat2 200 6400
    Secteur2 Contrat1 1000 30000
    Secteur2 Contrat3 500 7000


    J’ai commencé par faire ces deux requêtes :
    -ComptEqui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Secteur, Contrat, Count(*) AS NombreEqui
    FROM MaBase
    GROUP BY Secteur, Contrat
    -CalculPoids :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Secteur, Contrat, Sum((7850/2350)*val(poids)) AS [Poids Total]
    FROM MaBase
    GROUP BY Secteur, Contrat
    J'obtiens ainsi ces deux feuilles de données:

    Secteur Contrat NombreEqui
    Secteur1 Contrat1 4000
    Secteur1 Contrat2 200
    Secteur2 Contrat1 1000
    Secteur2 Contrat3 500

    et

    Secteur Contrat Poids Total
    Secteur1 Contrat1 70000
    Secteur1 Contrat2 6400
    Secteur2 Contrat1 30000
    Secteur2 Contrat3 7000


    J’ai vu la possibilité d’utiliser un LEFT JOIN cependant, cette methode ne fonctionne pas car la jonction doite se faire à la fois sur secteur et sur contrat.

    Si une âme charitable passe par là, je suis preneur de tout conseil.

    Merci beaucoup.

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Et carrément avec la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Secteur, Contrat, Count(*) AS NombreEqui , Sum((7850/2350)*val(poids)) AS [Poids Total]
    FROM MaBase
    GROUP BY Secteur, Contrat
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci de ta réponse,

    J'avais vu cette possibilité, pour cet exemple simplifié ça fonctionne parfaitement.
    Le problème est que je n'ai pas que le nombre d'équipements et le poids à récupérer mais aussi des attributs où je vais devoir utiliser des WHERE. Seulement je ne sais pas comment dissocier mes SELECT pour appliquer les WHERE à l'attribut correspondant.
    Je ne sais pas si j'ai été très clair.

    Cordialement,

    Baptiste

  4. #4
    Expert éminent

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

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

    Tu as besoin des autres attributs en résultat ou comme filtre ?
    Si c'est en résultat, donc un attribut correspondrait à un secteur et un contrat dans l'exemple , tu devrais pouvoir utiliser la fonction de domaine Rechdom ou DLookUp pour récupérer la (ou les) valeur.
    Si c'est comme filtre, tu devrais je pense faire une première requête de filtre et après utiliser les fonctions d'agrégations. La combinaison des 2 ne devraient pas être impossible, mais il faut voir le cas concret.

    Cordialement, et bonne continuation,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci, je ne connaissais pas la fonction RechDom, je vais chercher dans cette direction.

    Sinon pour le cas concret j'ai juste changer le nom des attributs et de ma table mais j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT MaTable.Domaine, MaTable.Contrat, Count(*) AS NombreEqui, Sum((7850/2350)*val(MaTable.poids)) AS [Poids Total]
    FROM MaTable
    GROUP BY MaTable.Domaine, MaTable.Contrat;
    J'obtiens bien le résultat voulu mais j'aimerai pouvoir ajouter la requête suivante à la première :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MaTable.Domaine, MaTable.Contrat, Count(*) AS [Nbre de P350-P400]
    FROM MaTable
    WHERE (((MaTable.Ref) Like "*P350*" Or (MaTable.Ref) Like "*P400*"))
    GROUP BY MaTable.Domaine, MaTable.Contrat;
    Mais si je fais le code suivant, le tri se fait pour tout et pas seulement pour le nombre de P350-P400:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MaTable.Domaine, MaTable.Contrat, Count(*) AS NombreEqui, Sum((7850/2350)*val(MaTable.poids)) AS [Poids Total], Count(*) AS [Nbre de P350-P400]
    FROM MaTable
    WHERE (((MaTable.Ref) Like "*P350*" Or (MaTable.Ref) Like "*P400*"))
    GROUP BY MaTable.Domaine, MaTable.Contrat;

    Merci encore.

    Baptiste

  6. #6
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Donc, comme je disais, passer par une première requête filtre R_Filtre avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MaTable.Domaine, MaTable.Contrat, MaTable.poids
    FROM MaTable
    WHERE (((MaTable.Ref) Like "*P350*" Or (MaTable.Ref) Like "*P400*"))
    Et la requête finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_Filtre.Domaine, R_Filtre.Contrat, Count(*) AS NombreEqui, Sum((7850/2350)*val(R_Filtre.poids)) AS [Poids Total], Count(*) AS [Nbre de P350-P400]
    FROM R_Filtre
    GROUP BY R_Filtre.Domaine, R_Filtre.Contrat;
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Le but de ma requête est d'obtenir le nombre d'équipements au total [NbreEqui] et le poids au total [Poids Total] et en plus d'obtenir le nombre d'équipement lorsque sa référence contient P350 ou P400 [Nbre de P350-P400].
    Tous ces attributs ordonnés par contrat et par domaine.


    Je joins ma table de départ et ce à quoi je voudrai aboutir.

    Nom : Requetes.JPG
Affichages : 66
Taille : 49,6 Ko

    Cordialement,

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/06/2015, 11h13
  2. Gerer deux bases de donnes dans une meme application
    Par skunkies dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/12/2008, 16h03
  3. Réponses: 4
    Dernier message: 10/03/2008, 16h12
  4. Copie de données dans une même table
    Par Tintou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/07/2007, 17h22
  5. [Conception] connexion de deux bases de données dans une page en php
    Par leclone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/04/2007, 14h59

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