Forum Clubic

Access - requête somme

Bonjour à tous :wink:

Bon je vais essayer d’expliquer mon problème.
J’ai une base de donnée avec 3 tables. Dans chacunes des tables il y a à la première colonne des noms et dans la deuxième colonne un nombre.
Certains noms se retrouvent sur les 3 listes, 2 listes ou alors sur une seule liste. Je souhaiterais faire une requête avec dans la première colonne tous les noms (des 3 tables) et dans la deuxième colonne la somme des nombres correspondants au noms (si le nom se retrouve que dans une seule table je souhaiterais avoir le nombre correspondant et pas une erreur).
Je ne sais pas si je suis assez clair. :frowning:
Sauriez-vous me dire quel type de requête je dois faire et surtout ce que je dois mettre dans ma requête pour avoir le résultat souhaité.
Je vous remercie d’avance pour votre aide. :jap:

Ton problème c’est la somme ou l’union des tables ?
Pour l’union des tables, si ces tables ont les mêmes noms de champs, passe par une table temporaire créée à l’aide d’une requête ajout.
Ensuite, tu la tries et tu fais dessus une requête de regroupement, avec la fonction somme pour ta colonne nombres.

En fait, j’ai 3 tables avec des noms dans la 1ère colonne, et dans la 2e colonne le nombre de fois que ces personnes sont venus. Chaques listes sont pour des choses différentes. Par ex. la première c’est pour dire bonjour, la deuxième c’est pour signer des documents etc. (c’est pas ça mais c’est juste pour l’exemple). Je voudrais donc faire une 4e liste (grâce à une requête ou alors avec excel, pour moi c’est pareil) avec le nombre de fois que ces personnes sont venus, peu importe la raison. J’espère que vous comprenez?
Je vais essayer ta solution gcc, j’avais pas pensé à ça et surtout je te remercie pour ton aide :wink:
:jap:

J’ai essayé ta solution gcc. Malheureusement cela ne fonctionne pas comme je le souhaite.:frowning:
J’ai donc fait une requête ajout pour 2 tables, et cela devrait me donner donc un nombre total d’enregistrement égal à la somme des enregistrements dans les 2 tables et ce n’est pas le cas. J’ai environs 1000 enregistrements par tables et dans la requête ajout j’en ai 991990, il a un petit problème. Ensuite j’ai un second problème mais je suppose que les 2 sont liés. Je fait donc une seconde requête ajout pour lier la requête ajout précédente avec la dernière table mais j’arrive pas à ajouter la requête ajout. :frowning:
Avez-vous une solution? A mon avis je dois faire une mauvaise manipulation. Ca fait assez longtemps que j’ai pas touché à access alors je suis assez rouillé.

J’ai réglé le problème. j’ai fait la requête ajout via excel avec un copier/coller et puis j’ai importer la feuille excel et j’ai fait la requête regroupement. C’était tout simple en fait, mais je m’entêtais avec le numéro de client qui n’était pas présent sur toutes les tables.
Merci pour ton aide gcc :wink:

Tu n’as pas dû faire une requête ajout, tu as dû faire une requête union.
ou alors les champs n’ont pas le même nom
Tu peux expliquer comment tu as fait ?

Désolé de répondre après quelques jours, j’étais à l’étrangé.:frowning:
J’ai fait une requête ajout comme tu avais expliqué, mais maintenant que tu le dis, les champs n’avaient pas exactement le même nom. Pour éviter de faire la requête ajout j’ai collé les 3 tables à la suite sur une feuille excel que j’ai ensuite importé et puis j’ai faitla requête regroupement. J’espère que tu comprend ce que j’ai fait.
Maintenant j’ai un autre problème. J’ai 4 tables différentes avec 2 champs en commun, le nom et n° de client.
Les 4 tables contiennent également des champs supplémentaires, tous différents.
A noter, tout les noms(et n° client) ne sont pas sur une seule table, ni même sur toutes les tables.
Maintenant mon problème. J’ai une première table avec les noms et n° clients, je voudrais faire une requête qui rajoute des champs qui se trouvent sur les 3 autres tables. J’ai fait une requête pour ça, mais le problème c’est que j’obtiens une liste ou les noms se retrouvent sur les 4 tables, hors je voudrais avoir tout les noms de la première table, quite à avoir des cases vides dans les autres champs. Je ne sais pas si vous me comprenez. Voici un exemple de ce que je souhaite

Je ne sais pas si le fait que certains champs sont en euro et d’autres non change quelque chose :frowning:
Auriez vous une solution afin de ne pas obtenir une liste avec uniquement les personnes qui se retrouvent sur les 4 tables?
Je vous remercie pour votre aide :jap:
Edité le 27/02/2009 à 20:14

Tu donnes un exemple de ce que tu veux, mais il faudrait ausi un exemple que ce que tu as actuellement et qui ne te convient pas.
Pour que ça fonctionne correctement, il faut que tu commences par constituer par regroupement une table contenant une et une seule fois l’ensembles des noms et numeros.
A partir de là, tu pourras remplir les champs (que tu auras prévus au départ) avec les valeurs prises dans les autres tables lorsqu’elles existent.
Tu vas employer pour cela une requête de mise à jour.

Le fait que certains champs contiennent des euros et pas les autres n’a pas d’importance pour ton problème actuel.
Par contre, si le signe euro est dans le contenu de la cellule (et non dans son format), ce contenu sera considéré comme une chaine de caractères, et tu ne pourras l’utiliser dans aucune opération (somme, par exemple).

En fait je peux pas trop dire ce qu’il y a dans les tables car c’est confidentiel. Je ne peux même pas me les envoyer pour travailler chez moi. Je pense que tous les noms sont dans la première table. Je vais donner un exemple de contenu des 4 tables, même si c’est pas ça mais ça revient au même.
Dans la première table il y a donc dans le premier champ les noms, 2e champ n° client, 3e champ personne de contact et encore un champ mais je sais plus quoi, je devrais regarder lundi.
Dans la seconde table il y a donc dans le premier champ les noms (pas tous ceux qui sont dans la première table), 2e champ n° client, 3e champ montant (de retrait par exemple), 4e et 5e champ on s’en fiche j’en ai pas besoin.
Dans la troisième table il y a dans le premier champ les noms (encore une fois pas tous ceux qui sont dans la première table) , 2e champ montant (de transfert par exemple), 4e et 5e champ j’ai pas besoin non plus.
Dans la quatrième et dernière table il y a dans le premier champ les noms (pas tous ceux de la 1e table), 2e champ montant (de versement par exemple) 4e et 5e champ j’ai pas besoin.

J’ai bien peur que certaines personnes sont présente dans la table 2 et 3 mais pas sur la talbe 1, j’en suis pas sûr.
Pour avoir une liste de tous les noms et n° je pense, si c’est vraiment nécessaire, je pense faire une requête regroupement alors.
Sinon pour la requête mise à jour, pourriez vous m’expliquer ce que je dois faire exactement? une nouvelle table vide? Que mettre dans “mise à jour” et peut-être dans “critère”?
Merci pour votre aide gcc.:jap:

J’ai l’impression que ma réponse d’hier a disparu …
Donc, pour les requêtes de mise à jour, tu as plein de tutos sur le sujet, mais l’idée est la suivante :

  • tu ouvres une requête vierge en mode création
  • tu y mets la table à mettre à jour (T1) et la table contenant les infos (T2)
  • tu établis une liaison entre les deux à travers un champ commun
  • dans les types de requête, tu choisis requête de mise à jour ; tu vois que les libelles des champs pour décrire les colonnes ne sont plus les mêmes.
    Uniquement pour les champs dont tu veux mettre la valeur à jour :
    dans “champs”, tu mets le nom du champ dans la table T1
    dans “mise à jour”, tu mets le nom du champ dans la table T2 (sous la forme Table!champ)

Ah oui, merci gcc. Je ne savais plus exactement comment mettre le nom du champ ([table]![champ]) et puis j’allais inverser “champ” et “mise à jour”. je vais tester ça demain et je vous tiens au courant. :jap: