Modification en masse

galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016 - 5 août 2014 à 19:09
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 12 août 2014 à 23:37
Bonjour,

j'ai une petite question , c'est comment faire une relation entre plusieurs tables d'une bdd sql afin d'une modification de la même information, je m'explique :

dans mes tables j'ai un même champ appelé (PAYS), ce que je veux c'est quand je modifie ce champs dans une table la mise à jour se ferai dans les autres tables automatiquement sans que je modifie mon champ dans chaque table séparément.

j'espère que j'ai bien expliqué mon problème et merci d'avance.

11 réponses

NHenry Messages postés 15111 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 avril 2024 159
5 août 2014 à 19:24
Je pense qu'un exemple ou plus d'information concernant le structure de ta base serait bienvenu.
0
galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016
5 août 2014 à 19:33
bonjour Nhenry,
comme d'habitude vous êtes toujours ici pour nous soutenir.

j'ai 3 tables -->

- Client :
(ID, nom, prénom, adresse, ville, pays)
- facture :
(ID, nom, prenom, adresse, ville, pays, numfacture, date)
- suivi general :
(ID, nom, prenom, adresse, ville, pays, numfacture, date, datelivraison, datemodif)


dans les 3 tables j'ai le même champ nommé (PAYS)
ce que je veux c'est quand je modifie le champ (PAYS) dans la table CLIENT la mise à jour du même champs se fera dans les autres tables.


0
NHenry Messages postés 15111 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 avril 2024 159
5 août 2014 à 19:37
Donc, tu as une redondance d'information.
Une mise en forme plus logique serait (je pense ) :
- Client :
(ID, nom, prénom, adresse, ville, pays)
- facture :
(ID, IdClient, numfacture, date)
- suivi general :
(ID, IdFacture, datelivraison, datemodif)

Et là plus de soucis.
0
galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016
5 août 2014 à 19:40
bonjour,
pour une manipulation ultérieure j'ai besoin de toutes ces informations dans mes tables. c'est pour ça qu'il y a cette redondance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 août 2014 à 09:22
Bonjour

Si tu modifies pays il faut aussi modifier ville non ?
0
galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016
6 août 2014 à 18:14
bonjour,
si j'arrive à modifier le pays dorénavant je peux modifier ce que je veux

merci.
0
NHenry Messages postés 15111 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 avril 2024 159
11 août 2014 à 14:49
Peut être voir avec des triggers (mais ça dépend de ton SGBDR).
Sinon, tu peux le faire via ton logiciel (retrouver les lignes à modifier).
0
jordane45 Messages postés 38134 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 avril 2024 344
11 août 2014 à 16:49
Bonjour,

pour une manipulation ultérieure j'ai besoin de toutes ces informations dans mes tables. c'est pour ça qu'il y a cette redondance
Quelque soit le "besoin" que tu as.... lors de la conception/manipulation d'une BDD .. si il y a redondance d'informations... c'est que la BDD est mal construite !

La réponse de NHenry http://codes-sources.commentcamarche.net/forum/affich-10033417-modification-en-masse#3 est sans aucun doute la meilleur proposition à suivre !


Si par la suite tu as besoin de récupérer "toutes" ces informations... il te suffit de faire des jointures.... Nul besoin de les avoir en triple exemplaires .....



0
galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016
12 août 2014 à 11:46
bonjour,

je vous remercie infiniment pour vos réponses, je vais essayé de suivre vos recommandations.

cordialement,

0
galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016
12 août 2014 à 17:42
bonjour,
je reviens vers vous pour reprendre notre discussion, je réexplique, alors disant que j'ai deux tables CLIENT et FACTURE :

alors dans la table client j'ai les champs ( ID - nom - adresse)
dans la table facture ( ID - nom - adresse - numfacture)

- dans la table CLIENT je stock les infos clients
- dans la table FACTURE je stock mes factures

alors la contrainte que je veux traiter c'est si un utilisateur lors de la saisie s'est trompé dans le nom d'un client et que déjà des factures ont été saisies et stockées dans la table FACTURE et qu'après il s'est avéré que le nom du client est erroné.
à ce moment quand je rectifie le nom du client dans la table CLIENT aussi il se rectifie dans la table FACTURE.


0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 août 2014 à 23:37
Bonjour
Comme te l'a dit NHenry tu as une redondance d'information.
les champs de la table client doivent etre
ID-CLIENT : PRIMARY KEY
Nom etc
dans la table facture
id facture clé unique
numfacture
ID client
tu ne dois pas avoir les champs nom - adresse
mais lié à la table client par ID-CLIENT

A la phase initiale tes tableaux sont vides.
On remplit le tableau client
ex ID Client le numéro d'identité du client ex 123456
nom Dubois
Prenom Paul

Quand on remplit la table facture correspondant
le idclient doit etre le meme que celui de la table client 123456

alors la contrainte que je veux traiter c'est si un utilisateur lors de la saisie s'est trompé dans le nom d'un client

justement la saisi doit etre fait par le id client et non par son nom
et prénom
0
Rejoignez-nous