Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise à jour d'une table à partir d'une autre

8 réponses
Avatar
NewsMic
Bonjour,

Soit 2 tables Commandes-Clients et LignedeCommande_Clients avec comme
relation leur NuméroFacture.
Dans la table Commandes, il y a le champ Origine
Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
évidemment toutes ses valeurs sont nulles.
Je voudrais mettre à jour ce champ Origine sur toutes les lignes en lui
attribuant la valeur correspondante de la table Commande pour chaque
NuméroFacture.
Quelle est la syntaxe SQl pour cett mise à jour, svp ?
Merci

NewsMic

8 réponses

Avatar
Blaise Cacramp
"NewsMic" a écrit dans le message de news:
48947e4e$0$911$
Bonjour,

Soit 2 tables Commandes-Clients et LignedeCommande_Clients avec comme
relation leur NuméroFacture.
Dans la table Commandes, il y a le champ Origine
Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
évidemment toutes ses valeurs sont nulles.
Je voudrais mettre à jour ce champ Origine sur toutes les lignes en lui
attribuant la valeur correspondante de la table Commande pour chaque
NuméroFacture.
Quelle est la syntaxe SQl pour cett mise à jour, svp ?
Merci

NewsMic




Hi

Donc, tu as deux tables avec une bonne relation (NuméroFacture), que tu
voudrais rompre en incluant un champ redondant (Origine).

Ta demande est, comment dire, contre nature.

--
Cdt
Avatar
NewsMic
Bonjour,

Apparemment, je me suis mal fait comprendre.

L'Origine est un code. On peut compter le nombre de commandes sur ce code.
En l'ajoutant à la table LignesdeCommande, on peut faire des stats par
articles vendus.sur cette Origine.
(Le NuméroFacture est unique, bien sûr)
ex : Table Commande-Clients : N° facture = 807001 et Origine = AAA
Supposons que dans la Table LignedeCommandes il y ait 3 articles
correspondant à cette facture, on aura 3 enregistrements sur 3 lignes ::
N° facture - RefArticle - Origine
807001 - Art1 - AAA
807001 - Art2 - AAA
807001 - Art2 - AAA

et actuellement, le champ Origine est vide. La redondance du n° de facture
et de l'origine est nécessaire.
Je ne veux pas ajouter toutes les références articles dans la table
Commandes-Clients en créant des champs supplémentaires, bien qu'on aurait
ainsi toutes les données sur 1 seule ligne et 1 seul enregistrement.

Amicalement,

NewsMic

"Blaise Cacramp" a écrit dans le message de news:


"NewsMic" a écrit dans le message de news:
48947e4e$0$911$
Bonjour,

Soit 2 tables Commandes-Clients et LignedeCommande_Clients avec comme
relation leur NuméroFacture.
Dans la table Commandes, il y a le champ Origine
Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
évidemment toutes ses valeurs sont nulles.
Je voudrais mettre à jour ce champ Origine sur toutes les lignes en lui
attribuant la valeur correspondante de la table Commande pour chaque
NuméroFacture.
Quelle est la syntaxe SQl pour cett mise à jour, svp ?
Merci

NewsMic




Hi

Donc, tu as deux tables avec une bonne relation (NuméroFacture), que tu
voudrais rompre en incluant un champ redondant (Origine).

Ta demande est, comment dire, contre nature.

--
Cdt





Avatar
Blaise Cacramp
"NewsMic" a écrit dans le message de news:
48959a41$0$872$
Bonjour,

Apparemment, je me suis mal fait comprendre.

L'Origine est un code. On peut compter le nombre de commandes sur ce code.
En l'ajoutant à la table LignesdeCommande, on peut faire des stats par
articles vendus.sur cette Origine.
(Le NuméroFacture est unique, bien sûr)
ex : Table Commande-Clients : N° facture = 807001 et Origine = AAA
Supposons que dans la Table LignedeCommandes il y ait 3 articles
correspondant à cette facture, on aura 3 enregistrements sur 3 lignes ::
N° facture - RefArticle - Origine
807001 - Art1 - AAA
807001 - Art2 - AAA
807001 - Art2 - AAA

et actuellement, le champ Origine est vide. La redondance du n° de facture
et de l'origine est nécessaire.
Je ne veux pas ajouter toutes les références articles dans la table
Commandes-Clients en créant des champs supplémentaires, bien qu'on aurait
ainsi toutes les données sur 1 seule ligne et 1 seul enregistrement.

Amicalement,

NewsMic




Bonjour,

Donc, tu as deux tables ?

--
Cdt
Avatar
3stone
Salut,

"NewsMic"
| Soit 2 tables Commandes-Clients et LignedeCommande_Clients avec comme
| relation leur NuméroFacture.
| Dans la table Commandes, il y a le champ Origine
| Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
| évidemment toutes ses valeurs sont nulles.
| Je voudrais mettre à jour ce champ Origine sur toutes les lignes en lui
| attribuant la valeur correspondante de la table Commande pour chaque
| NuméroFacture.
| Quelle est la syntaxe SQl pour cett mise à jour, svp ?

Avant de parler syntaxe, il faut savoir le pourquoi du comment ;-)

Tu dis:
| Dans la table Commandes, il y a le champ Origine
| Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
| évidemment toutes ses valeurs sont nulles.

Que représente ce champ "Origine" ?
Il contient l'origine de la facture... ou du produit ?

De tout façon, il ne doit pas se retrouver dans les deux tables, cela
est réservé au "champ de liaison" (NumeroFacture - clé primaire et clé externe)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Blaise Cacramp
Je me demande si comme dit 3stone, tu veux pas un résultat en table plate
comme Excel.

Bon supposons ceci: (1er exemple)

Table1
RefFacture RefArticle
807001 Art 1
807001 Art 2
807001 Art 3


Table2
RefFacture Origine
807001 AAA
807002 BBB

SQL :

SELECT Table1.RefFacture, Table1.RefArticle, Table2.Origine
FROM Table1 INNER JOIN Table2 ON Table1.RefFacture = Table2.RefFacture;

Résultat :

Requête1
RefFacture RefArticle Origine
807001 Art 1 AAA
807001 Art 2 AAA
807001 Art 3 AAA

(2eme exemple - celui que j'aime pas)

Table1
RefFacture RefArticle Origine
807001 Art 1
807001 Art 2
807001 Art 3


Table2
RefFacture Origine
807001 AAA
807002 BBB

SQL :
UPDATE Table1 INNER JOIN Table2 ON Table1.RefFacture = Table2.RefFacture SET
Table1.Origine = [table2]![origine];

La lancer avec le bouton "!"
Avatar
NewsMic
Merci pour cette solution.

Effectivement, ça donne un résultat en table plate.
Je pourrais prendre la solution d'exporter la table sur Excel, d'y créer les
formules de mises à jour et recopier les éléments dans la table.
Je ne pensais pas que ma demande poserais des soucis, je dirais "d'éthique"
Access.
(Je complète la réponse sur mon autre message)

Amicalement,
NewsMic


"Blaise Cacramp" a écrit dans le message de news:
%23XjD$
Je me demande si comme dit 3stone, tu veux pas un résultat en table plate
comme Excel.

Bon supposons ceci: (1er exemple)

Table1
RefFacture RefArticle
807001 Art 1
807001 Art 2
807001 Art 3


Table2
RefFacture Origine
807001 AAA
807002 BBB

SQL :

SELECT Table1.RefFacture, Table1.RefArticle, Table2.Origine
FROM Table1 INNER JOIN Table2 ON Table1.RefFacture = Table2.RefFacture;

Résultat :

Requête1
RefFacture RefArticle Origine
807001 Art 1 AAA
807001 Art 2 AAA
807001 Art 3 AAA

(2eme exemple - celui que j'aime pas)

Table1
RefFacture RefArticle Origine
807001 Art 1
807001 Art 2
807001 Art 3


Table2
RefFacture Origine
807001 AAA
807002 BBB

SQL :
UPDATE Table1 INNER JOIN Table2 ON Table1.RefFacture = Table2.RefFacture
SET Table1.Origine = [table2]![origine];

La lancer avec le bouton "!"




Avatar
NewsMic
Bonjour,

"Origine" est le code représentant l'origine de la commande (appelé aussi
Support) : Magazine de Presse, Routage (publipostage), teléphone, fax, mail,
site web....etc
Mais finalement, je suis long à la détente mais si je comprends bien, sous
Access, seul 1 ou 2 champs de laison sont nécessaires dans les tables.
Aucune redondance.
Si les champs dans les tables sont bien conçus, toutes les requêtes
imaginables sont permises.
Le résultat que je recherche est : quel est le hit parade des codes Origine
tous articles confondus
Quel est le hit parade des articles sur les meilleurs code Origine
La table Commandes-Clients contient (entre autres) les champs NuméroFacture
et Origine
La table LignesdeCommandes contient (entre autres) les champs NuméroFacture,
RéfArticle
Une ou plusieurs requêtes (croisées ?) seraient'elles la solution pour
obtennir ces hit parades ?

Amicalement,
NewsMic

"3stone" a écrit dans le message de news:
%
Salut,

"NewsMic"
| Soit 2 tables Commandes-Clients et LignedeCommande_Clients avec comme
| relation leur NuméroFacture.
| Dans la table Commandes, il y a le champ Origine
| Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
| évidemment toutes ses valeurs sont nulles.
| Je voudrais mettre à jour ce champ Origine sur toutes les lignes en lui
| attribuant la valeur correspondante de la table Commande pour chaque
| NuméroFacture.
| Quelle est la syntaxe SQl pour cett mise à jour, svp ?

Avant de parler syntaxe, il faut savoir le pourquoi du comment ;-)

Tu dis:
| Dans la table Commandes, il y a le champ Origine
| Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
| évidemment toutes ses valeurs sont nulles.

Que représente ce champ "Origine" ?
Il contient l'origine de la facture... ou du produit ?

De tout façon, il ne doit pas se retrouver dans les deux tables, cela
est réservé au "champ de liaison" (NumeroFacture - clé primaire et clé
externe)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
3stone
Salut,

Donc, le champ Origine n'a rien à faire dans la table DétailsFacture...

Pour obtenir les réponses que tu souhaites, il suffit d'ammener les
deux tables dans la requête et d'utiliser un regroupement et un
Count() et tu obtient ton hit-parade ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



"NewsMic"
| "Origine" est le code représentant l'origine de la commande (appelé aussi
| Support) : Magazine de Presse, Routage (publipostage), teléphone, fax, mail,
| site web....etc
| Mais finalement, je suis long à la détente mais si je comprends bien, sous
| Access, seul 1 ou 2 champs de laison sont nécessaires dans les tables.
| Aucune redondance.
| Si les champs dans les tables sont bien conçus, toutes les requêtes
| imaginables sont permises.
| Le résultat que je recherche est : quel est le hit parade des codes Origine
| tous articles confondus
| Quel est le hit parade des articles sur les meilleurs code Origine
| La table Commandes-Clients contient (entre autres) les champs NuméroFacture
| et Origine
| La table LignesdeCommandes contient (entre autres) les champs NuméroFacture,
| RéfArticle
| Une ou plusieurs requêtes (croisées ?) seraient'elles la solution pour
| obtennir ces hit parades ?
|
| Amicalement,
| NewsMic
|
| "3stone" a écrit dans le message de news:
| %
| > Salut,
| >
| > "NewsMic"
| > | Soit 2 tables Commandes-Clients et LignedeCommande_Clients avec comme
| > | relation leur NuméroFacture.
| > | Dans la table Commandes, il y a le champ Origine
| > | Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
| > | évidemment toutes ses valeurs sont nulles.
| > | Je voudrais mettre à jour ce champ Origine sur toutes les lignes en lui
| > | attribuant la valeur correspondante de la table Commande pour chaque
| > | NuméroFacture.
| > | Quelle est la syntaxe SQl pour cett mise à jour, svp ?
| >
| > Avant de parler syntaxe, il faut savoir le pourquoi du comment ;-)
| >
| > Tu dis:
| > | Dans la table Commandes, il y a le champ Origine
| > | Il n'existait pas dans la table LignedeCommande. Je l'ai ajouté mais
| > | évidemment toutes ses valeurs sont nulles.
| >
| > Que représente ce champ "Origine" ?
| > Il contient l'origine de la facture... ou du produit ?
| >
| > De tout façon, il ne doit pas se retrouver dans les deux tables, cela
| > est réservé au "champ de liaison" (NumeroFacture - clé primaire et clé
| > externe)
| >
| > --
| > A+
| > Pierre (3stone) Access MVP
| > Perso: http://www.3stone.be/
| > MPFA: http://www.mpfa.info/ (infos générales)
| >
| >
|
|