2010-10-12 5 views
0

Hé les gars, comment diable vais-je faire cela.Mettre à jour la colonne quand un utilisateur renomme les données d'une autre table

J'ai un carnet d'adresses que je fais et j'essaie de comprendre comment aborder mes groupes. Je laisse les utilisateurs renommer leurs groupes à volonté. Mais alors cela complique ma vie, 0

J'ai 2 tables. groups et contacts les groupes ont les noms de groupes par utilisateur. les contacts ont une colonne group qui indique à quel groupe appartient cette entrée de contact.

Comment puis-je renommer un groupe de la table groups et faire refléter le nouveau nom dans la table contacts pour que tout concorde?

Répondre

5

Je suggère de changer votre modèle.
Utilisez ID de clés primaires et une intersection table pour attribuer vos contacts à des groupes:

Groups 
id 
name 

Contacts 
id 
name 

Group_Contacts 
group_id -> Groups.id 
contact_id -> Contacts.id 

Maintenant, vous pouvez changer le nom de groupe chaque fois que vous voulez, sans mettre à jour les contacts.


EDIT: Si vous ne souhaitez obtenir les contacts d'un certain groupe, utilisez un SELECT comme celui-ci:

Select c.name 
From groups g 
Join group_contacts gc On (gc.group_id = g.id) 
Join contacts c On (c.id = gc.contact_id) 
Where g.name = 'Your group name' 
+0

hmm Je vois, pouvez-vous me donner un scénario php/sql rapide sur la façon dont je pourrais commencer mon installation pls;) – Eli

+0

@ s2xi: Ce serait difficile sans savoir exactement quoi Les problèmes sont. S'il vous plaît essayer de le configurer vous-même, et n'hésitez pas à poser une autre question une fois que vous êtes coincé ... –

+0

bien ok, peut-être que j'ai juste besoin d'un indice/pousser dans la bonne direction. Lorsque j'interroge la base de données afin d'obtenir les noms de groupe, j'interrogerais la table des groupes? afin d'obtenir une liste de contacts, je voudrais interroger la table de contacts correcte? si je voulais seulement obtenir les contacts qui appartiennent à un groupe spécifique, que devrais-je interroger? – Eli

1

Vous pouvez également utiliser un déclencheur avant de mise à jour qui a d'abord renomme tous entrées dans la table de contacts pour faire correspondre le nouveau nom, puis laissez la mise à jour continuer

Questions connexes