begin process at 2012 02 15 00:37:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Base de données

 > 

ADO & DAO

 > 

Jointures des tables et regroupement des données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Jointures des tables et regroupement des données

mercredi 29 avril 2009 à 10:36:03 | Jointures des tables et regroupement des données

AH60

bonjour..
j'ai 02 tables access:
1. banque, contient les champs suivant : code, fournisseur, crédit
2. charges, contient les champs suivant : code, fournisseur, montant


je voudrais faire la somme des crédits de la table banque du fournisseur x
et la somme des montants de la table charges du même fournisseur
genre (GROUP BY )
et mettre tout ca dans une troisième table appelée récap
sachant que j'ai plusieurs fournisseurs soit dans la table banque ou dans la table charges, les deux tables sont liées par le champ code
quelqu'un peut m'aider a trouver le sql qui règle ce problème.

merci d'avance


Abed_H

mercredi 29 avril 2009 à 15:10:04 | Re : Jointures des tables et regroupement des données

LIBRE_MAX

Salut,
tu passes d' abord par une requete incluant les deux tables,
et dans laquelle tu sélectionnera fournisseur, credit, montant.
Reste à savoir quelle sera la propriété de la relation.
Pour celà tu dois répondre à la question:
Est-ce qu' un fournisseur peut avoir un crédit et pas de charge ou l' inverse ?
La réponse déterminera de quelle table sera extrait le champ fournisseur.
Deux possibilité alors:
-Soit :banque.Fournisseur, banque.credit, IIF(IsNull(charges.montant),0,charges.montant)
-Soit :charges.Fournisseur, chatres.montant, IIF(IsNull(banque.credit),0,banque.credit).

C' est après que tu pourras faire ,l à partir de cette requete, le regroupement sur fournisseur pour avoir la somme de credit et la somme de montant.

       


[] Ce qui va sans dire. va mieux en le disant.


mercredi 29 avril 2009 à 15:53:32 | Re : Jointures des tables et regroupement des données

AH60

Salut,

un fournisseur peut avoir plusieurs crédits.banque et plusieurs montants.charges, je voudrais avoir des enregistrements dans la troisième table
comme ceci
code       Somme_montants        Somme_credits
  x                 1000                             1500
  y                 1500                             2000
  z                 3000                             3000
ect........

et merci encore.

Abed_H

mercredi 29 avril 2009 à 16:23:15 | Re : Jointures des tables et regroupement des données

LIBRE_MAX

"..un fournisseur peut avoir plusieurs crédits.banque
et plusieurs montants.charge"

Pris indépendament, d' acc !

Mais là puisque les deux vont être mises en relation.
La question est :
Est-ce qu'un fournisseur peut avoir des crédits sans avoir de charges ?
Est-ce qu'un fournisseur peut avoir des charges sans avoir de crédits ?
Ou bien:
S' il a une charge, il a forcément un crédit ? (ou inversement)

De ceci dépendera le type de correspondance qu' il y' aura entre les deux tables.

Quand tu dis :
code  Somme_montants  Somme_credits

Puisque le champ code éxiste dans les deux tables, la requete doit savoir de la quelle des deux elle va extraire ce champ ci.

      


[] Ce qui va sans dire. va mieux en le disant.


mercredi 29 avril 2009 à 16:42:36 | Re : Jointures des tables et regroupement des données

AH60

Re,
peut être j'ai mal exposé le pb
voilà exemple : un fournisseur peut avoir cinq (5) crédits et peut avoir aussi huit (8) charges donc là je voudrais la somme des cinq (5) crédits et la somme de huit (8) montants a part du meme fournisseur. et en passe au deuxieme fournisseur ect... j'usqu'a la fin 
pour ce qui est du  code Somme_montants        Somme_credits     c'est les noms des champs de la troisieme table.
j'espère que j'étais clair maintenant.

Merci 

Abed_H

mercredi 29 avril 2009 à 17:05:21 | Re : Jointures des tables et regroupement des données

LIBRE_MAX

"..un fournisseur peut avoir cinq (5) crédits et
peut avoir aussi huit (8) charges"
Encore une fois, t' a spas répondu à la question !

Est-ce qu' un fournisseur peut avoir cinq (5) crédits et
peut avoir aussi nulle charge ?
Est-ce qu' un fournisseur peut avoir nul crédit et
peut avoir aussi huit (8) charges ?

A supposer que l' on fait selon l' exemple)
-une première requete pour avoir la somme des CINQ crédits.
-une deuxère requete pour avoir la somme des HUIT chargess.
-Une troisième requete dans laquelle on lie la première avec la deuxième,
pour avoir la somme des CINQ crédits et la somme des HUIT charges.
De la quelle des deux on va tirer le champ fournisseur ?


 								

[] Ce qui va sans dire. va mieux en le disant.


mercredi 29 avril 2009 à 17:33:23 | Re : Jointures des tables et regroupement des données

LIBRE_MAX

Une solution cependant:
Si tu as une table fournisseurs, fais une première requete pour avoir la somme des crédits de chaque fournisseurs et une deuxième pour avoir la somme des charges de chaque fournisseur.
Dans une requete avec les trois,lies ta table fournissurs à ses deux requetes .Propriété de chaque liaison:Tous de la table fournisseurs.
Et extrait:

-le champ fournisseur de la table fournisseurs.
-la somme des crédits de la première requete.
-la somme des charges de la deuxière requete.

      


[] Ce qui va sans dire. va mieux en le disant.


mercredi 29 avril 2009 à 17:59:13 | Re : Jointures des tables et regroupement des données

LIBRE_MAX

Autre solution:
Fais une requete UNION:
"SELECT code, fournisseur, credit, 0 AS montant FROM credit " & _
"UNION SELECT code, fournisseur, 0 AS credit, montant FROM charges;"

Puis fais une requete regroupement sur cette requete pour avoir code, somme de credit, somme de charge.

 								

[] Ce qui va sans dire. va mieux en le disant.


jeudi 30 avril 2009 à 14:54:27 | Re : Jointures des tables et regroupement des données

alcyde01

Bonjour,

tu peux y certainement y arriver en faisant plusieurs opérations et en stockant les résultats intermédiaires, mais pourquoi se passer de la puissance de SQL ?  Ton problème serait résolu en une seule requête, mais pour cela il faudrait que ta base de données soit bien structurée, ce qui n'est pas le cas de l'exemple que tu donnes. Si tu veux faire un regroupement par fournisseur il faut impérativement que tous les fournisseurs soient présents dans une des tables ce dont on ne peut être sûr avec tes tables actuelles (d'où les questions de libre Max au sujet des fournisseurs avec ou sans crédit/charge).

Mon conseil est donc de commencer par revoir la structure de ta base de données ; c'est un peu contraignant, mais crois-moi ca aura beaucoup d'avantages si tu veux faire évoluer ton application dans le futur, et puis c'est mieux de faire les choses comme elles doivent être faites :

 

- Si tu as peu de champs, et tu veux faire simple, tu peux te limiter a une seule table :

 

Fournisseur

Code

Crédit

Montant

 

 

 

 

 

Lors de la saisie ton application mettra à jour la colonne crédit/montant appropriée et laissera l'autre à 0. Le code correspondra à la colonne mise à jour (si dans ton exemple le code se rapporte à l'opération ; je n'ai pas bien compris).

Cde SQL pour avoir les sommes par fournisseur :

SELECT table4.fournisseur, Sum(table4.credit) AS SommeDecredit, Sum(table4.Montant) AS SommeDeMontant

FROM table4

GROUP BY table4.fournisseur;

 

- Si tu as plusieurs champs relatifs au fournisseur (tel,adresse .), ou tu veux te familiariser avec les BDD relationnelles , tu peux faire :

 

 

Table fournisseurs(table1)

 

Table Données(table2)

Id

Fournisseur

Tel

Adresse

 

IdFournisseur

Code

Crédit

Montant

1

 

 


 

1

 

 

 

2

 

 

 


2

 

 

 

3

 

 

 


2

 

 

 

 

 

 


 

1

 

 

 


 

 


 

3

 

 

 

 

La contrainte est que si tu veux ajouter un crédit/montant à un fournisseur, ce dernier doit exister dans la table des fournisseurs. C'est à ton application de le gérer.

 

Cde SQL pour avoir les sommes par fournisseur :

SELECT Table1.Id, Sum(Table2.Crédit) AS SommeDecredit, Sum(Table2.Montant) AS SommeDeMontant

FROM  Table1 LEFT JOIN Table2 ON Table1.Id = Table2.IdFournisseur

GROUP BY Table1.Id;

 

En espérant que ça fasse avancer le SCHMILBLIK ...

lundi 4 mai 2009 à 10:12:46 | Re : Jointures des tables et regroupement des donn¨¦es

AH60

Bonjour et merci beaucoup ¨¤ vous deux
ce code m'a donn¨¦ exactement le r¨¦sultat escompt¨¦ mais seulement j'aurais pr¨¦f¨¦rer que la somme des montants soit dans une colonne et la somme des cr¨¦dits dans une autre colonne en face.

Code   ©¦   SommeDecredit     ©¦      SommeDeMontant

Sub Main()
Dim strConn As ADODB.Connection
Dim rstBq As ADODB.Recordset    'code banques
Set strConn = New ADODB.Connection
        MaDb = "D:\GestRecettes\Base.mdb"
        strConn = "driver={Microsoft Access Driver (*.mdb)};dbq=" & MaDb
        strConn.Open
Set rstBq = New ADODB.Recordset
rstBq.Open "SELECT code,Sum(d¨¦pense) AS SommeDecredit from mvtsbanques group by code " & _
           "UNION SELECT code,Sum(Montant) AS SommeDeMontant From charges group by code ", strConn, 1, 3

Feuil1.Range("A1").CopyFromRecordset rstBq
Set rstBq = Nothing: Set strConn = Nothing
End Sub
 

Bonne journ¨¦e.

Abed_H


1 2

Cette discussion est classée dans : table, banque, tables, fournisseur, charges


Répondre à ce message

Sujets en rapport avec ce message

Copier une table dans une base Access [ par apkwa ] Salut tout le monde,J'ai une base Access qui possède plusieurs tables et je voudrais copier une de ces tables en la renommant (tout en la gardant dans création d'une table à partir de références de tables attachées [ par tpf ] Dans mon environnement, je ne peux pas lire le chemin complet d'une table attachée (la fenêtre d'affichage étant trop petite et pas paramétrable).Donc Tables temporaires dans VB6 + SQL Server [ par lolo ] Bonjour,j'ai une appli qui a besoin de tables de travail pour ses calculs, et qui est multi-utilisateurs. J'ai donc pensé aux tables temporaires, mais Exporter une table d'une base Access vers une autre base Access [ par Ben ] Bonjour,J'ai une base access 2000 contenant quelques tables que j'aimerais exporter vers une autre base access 2000.Biensûr, je devrais également copi MSHFlexGrid sans DataEnvironnement [ par Francois Pignon ] 1.Comment remplir une MSHFlexgrid sans utiliser de connection via un DataEnvironnement ?2.L'aide montre l'utilisation de 'SHAPE'.... mais pour lier de ULTRA URGENT???? [ par javi ] bonjour,je désire imprimer un document qui est constitué des données stockées dans plusieures tables. exemple:j'ai un table facture, et une table four dataenvironment 2 tables liées sos examens [ par Quentounais ] SOS.Je dois réaliser un projet en vb pour mes examens et je nage un peu.J'ai créé une base Access avec deux tables.la première. no(noautomatique) nom [access] crée des champs quand les tables sont liées? [ par jerry666 ] BOnjour,j ai vraiment besoin de votre aide parce que la je sait plus quoi faire.on m a demander de convertir une base de francs en eurodonc j ai ecrit [access] crée des champs quand les tables sont liées? [ par jerry666 ] BOnjour,j ai vraiment besoin de votre aide parce que la je sait plus quoi faire.on m a demander de convertir une base de francs en eurodonc j ai ecrit Nom des Tables et Champs via SQL et/ou VB6 [ par BSide ] Bonjour,pouvez-vous me dire :1) comment récupérer le nom d'une Table et d'un Champ dans une BD ?2) comment ajouter un champ à une table (create field


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,744 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales