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 :

Création d'une Base pour faire du reporting


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut Création d'une Base pour faire du reporting
    Bonjour tout le monde,

    Je me lance dans une nouvelle aventure, créer une base access pour m'aider à faire du reporting afin d'allèger mes gros fichiers excel avec des liaisons dans tius les sens.

    En fait, j'ai déjà créé les tables suivantes :

    Base produit :qui contient la liste de mes produits et ses attributs
    Volumes Origines : qui contient le nombre de tonnes que je vendre par mois en colonne
    Volumes EACH : qui via une requête que j'ai créé me calcul le nombre d'unité que j'ai vendu par mois en colonne.

    Première Question comment je peux faire pour avoir mes mois en ligne au lieu de colonne c'est à dire :

    Article | Mois | Unité vendu
    1 2 15

    Au lieu d'avoir comme j'ai

    Article | Mois 1 | Mois 2 | Mois 3
    1 16 15

    J'espère avoir été assez claire car ensuite je voudrais calculé Mon chiffre d'affaire en multipliant le résultat de cette nouvelle base par le tarif qui se trouve dans la base Produit.

    Ci-dessous le code SQL :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Volumes Origines].Material, [Volumes Origines].Business, "EA" AS Unit, Sum([1]*1000/[Base Produit]![Poids Total]) AS [Volume 01], Sum([2]*1000/[Base Produit]![Poids Total]) AS [Volume 02], Sum([3]*1000/[Base Produit]![Poids Total]) AS [Volume 03], Sum([4]*1000/[Base Produit]![Poids Total]) AS [Volume 04], Sum([5]*1000/[Base Produit]![Poids Total]) AS [Volume 05], Sum([6]*1000/[Base Produit]![Poids Total]) AS [Volume 06], Sum([7]*1000/[Base Produit]![Poids Total]) AS [Volume 07], Sum([8]*1000/[Base Produit]![Poids Total]) AS [Volume 08], Sum([9]*1000/[Base Produit]![Poids Total]) AS [Volume 09], Sum([10]*1000/[Base Produit]![Poids Total]) AS [Volume 10], Sum([11]*1000/[Base Produit]![Poids Total]) AS [Volume 11], Sum([12]*1000/[Base Produit]![Poids Total]) AS [Volume 12] INTO [Volumes EACH]
    FROM [Volumes Origines] INNER JOIN [Base Produit] ON [Volumes Origines].Material = [Base Produit].Material
    GROUP BY [Volumes Origines].Material, [Volumes Origines].Business, "EA";


    D'avance merci de votre aide dans ma longue aventure

    StephAccess

  2. #2
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour stephaccess,

    Ta demande ressemble beaucoup à une analyse croisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Sum([rqProduit].[Poids Total]) AS [Unité vendu]
    SELECT rqProduit.[Article], Month([Date_Vente]) AS Mois
    FROM rqProduit
    GROUP BY Month([Date_A]), rqProduit.[Article]
    PIVOT "Quantité";
    Il faut que tu crées une première requête, que j'ai nommée "rqProduit" pour l'exemple, qui va contenir tous les champs nécessaires. Dans mon exemple le groupement se fait par mois en premier donc tous les mois pour l'article x. Si tu veux par article il faut changer l'ordre dans GroupBy. Ça devrait te donner le résultat:
    Article | Mois | Unité vendu
    1 2 15
    Bonne journée

  3. #3
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut Pas tous compris
    Bonjour Robert1957,

    En fait j'ai des données actuellement dans une table qui sont comme ça :

    Material 1 2 3 4
    TV LED 100 10 50 300
    TV PLASMA 50 200 100 60

    Et je voudrais qu'elle soit comme ça

    Matérial Mois Quantité Vendu
    TV LED 1 100
    TV LED 2 10
    TV LED 3 50
    TV LED 4 300
    TV PLASMA 1 50
    TV PLASMA 2 200
    TV PLASMA 3 100
    TV PLASMA 4 60

    ci-dessous le code sql qui me permet d'avoir la première table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Volumes Origines].Material, [Volumes Origines].Business, "EA" AS Unit, Sum([Vol 1]*1000/[Base Produit]![Poids Total]) AS 1, Sum([Vol 2]*1000/[Base Produit]![Poids Total]) AS 2, Sum([Vol 3]*1000/[Base Produit]![Poids Total]) AS 3, Sum([Vol 4]*1000/[Base Produit]![Poids Total]) AS 4, Sum([Vol 5]*1000/[Base Produit]![Poids Total]) AS 5, Sum([Vol 6]*1000/[Base Produit]![Poids Total]) AS 6, Sum([Vol 7]*1000/[Base Produit]![Poids Total]) AS 7, Sum([Vol 8]*1000/[Base Produit]![Poids Total]) AS 8, Sum([Vol 9]*1000/[Base Produit]![Poids Total]) AS 9, Sum([Vol 10]*1000/[Base Produit]![Poids Total]) AS 10, Sum([Vol 11]*1000/[Base Produit]![Poids Total]) AS 11, Sum([Vol 12]*1000/[Base Produit]![Poids Total]) AS 12 INTO [Volumes EACH]
    FROM [Volumes Origines] INNER JOIN [Base Produit] ON [Volumes Origines].Material = [Base Produit].Material
    GROUP BY [Volumes Origines].Material, [Volumes Origines].Business, "EA";

    J'espère être plus claire

    StephAccess

  4. #4
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour stephaccess,

    C'est exactement ce que ma requête ferait sur les tables d'origines, pas sur la table que tu as crée avec ta requête. Il faudrait bien sûr adapter avec tes champs. Je suppose que Vol 1 est un regroupement pour le mois de janvier etc...

    Bonne journée

  5. #5
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut Adaptation Requête
    Robert1957,

    J'ai essayé d'adapter mes cela me donne le poids de mes articles par mois, mais ce que je cherche c'est le nombre d'article vendu par mois, sachant que j'ai une table A qui contient mes tonnes vendues par mois en colonne et une table B qui contient le poids de chaque article, donc je dois diviser les articles vendus par mois par le poids de l'article en table B et qu'il me donne le résultat avec les articles et les mois en ligne et en colonne le résultat de mes unité vendu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TRANSFORM Sum([Base Produit.Poids Total]) AS [Unité vendu]
    SELECT [Volumes Origines.Material], Month([Date_Vente]) AS Mois
    FROM [Volumes Origines]
    GROUP BY Month([Date_A]), [Volumes Origines.Material]
    PIVOT "Quantité";
    En fait je ne comprends pas la première ligne, et à quel moment je lui dit de mettre les valeurs qui trouve pour l'article
    Material| 1 |2 |3 |4
    TV LED | 100 |10 |50 |300

    En ce résultat :

    Matérial |Mois |Quantité Vendu
    TV LED |1 |100
    TV LED |2 |10
    TV LED |3 |50
    TV LED |4 |300

    Désolé mais je débute vraiment avec access

    D'avance merci

    Stephaccess

  6. #6
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour stephaccess,

    J'essaie une réponse sans avoir la structure de tes tables. Une première requête qui dirait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TableB.Article, TableA.Article, TableA.Mois, [TableA].[Poid]/[TableB].[Poid] AS Unite
    FROM TableA INNER JOIN TableB ON TableA.Article = TableB.Article;
    Puis basé sur cette requête, une autre requête qui dirait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Sum(rqBase.[Unite]) AS [Total de Unite]
    SELECT rqBase.[TableA].[Article], rqBase.[Mois]
    FROM rqBase
    GROUP BY rqBase.[TableA].[Article], rqBase.[Mois]
    PIVOT "Unité vendue";
    Devrait te retourner un résultat:
    Article/Mois/Unité vendue
    Led/1/15
    Led/2/20
    Led/3/14
    Plasma/1/22
    Plasma/2/33

    Bonne journée

  7. #7
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    Robert1957,

    Veux-tu que je t'envoi un exemple de mes 2 tables d'origine et de ce que je veux avoir ??

    Je vais quand même essayer tes requetes

    Stephaccess

  8. #8
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour stephaccess,

    Si tu n'y arrives pas post les tables avec un peu de données.

    Bonne chance

  9. #9
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    oki doc merci beaucoup de ton aide

    tu es du canada ??

  10. #10
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    oui

  11. #11
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut J'ai abandonné
    Bonjour Robert,

    J'ai abandonné car je ne comprends pas, mais je sais que c'est possible car j'ai déjà une base acces qui le fait mais elle a été conçu sur access2003 et j'ai du mal à m'y retrouver.

    Enfin bref maintenant j'ai changer ma première alimentation j'ai déjà mis en ligne mes mois et mes volumes par article, maintenant je voudrais ajouter un champ dans une table mais je n'y arrive pas grrrrrr

    Regarde j'ai créé un nouveau sujet [AC-2010] Ajout d'un champ dans une table existante

    Au fait une autre personne avait à peu près le même soucis que moi : albayt Requête Rassembler les informations de plusieurs lignes en une seule

    Bien à toi

    StephAccess

  12. #12
    Membre averti
    Homme Profil pro
    finance gestion
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : finance gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    Bonjour Robert1957,

    Ma réponse était là mais mes critères de recherche n'était pas bon

    Dans la zone Les meilleures sources Access et chapitre Réaliser des totaux en ligne et en colonne

    Merci quand même de ton aide

    Stephaccess

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/10/2014, 10h48
  2. Création d'une base pour gérer une ONG
    Par martin2604 dans le forum Modélisation
    Réponses: 6
    Dernier message: 22/08/2014, 13h01
  3. Réponses: 60
    Dernier message: 03/12/2010, 20h03
  4. création d'une base en 9.2 pour php/apache ?
    Par sgonzale dans le forum Oracle
    Réponses: 3
    Dernier message: 15/12/2004, 15h46
  5. Réponses: 4
    Dernier message: 22/09/2004, 09h17

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