我的问题与此问题类似(但同时完全不同): Contacts Database
问题很简单:如何创建一个联系人数据库表,用于存储用户ID和联系人ID而无需复制密钥。
例如,如果我有一个名为Contacts的表,它将有一个列user_id和一个列contact_id。
一旦我这样做,它应该像插入用户和添加的联系人一样简单。完成后,如何选择所有用户的联系人?另外,如果需要,如何缩小联系人条目以将其删除?
答案 0 :(得分:1)
我最后只创建了一个包含两个外键的表,然后根据其中一个字段选择它们。
例如(伪代码 - 没有特定语言,只有英文):
Table Contact:
user = ForeignKey(from user table)
contact = ForeignKey(from user table)
然后每当我需要他们的东西时,我会检查用户字段是否包含我想要的东西,然后我会检查联系人字段是否有我想要的东西。这样我就不必重复记录了,我仍然可以找到我需要的东西。
感谢您的回答。
答案 1 :(得分:0)
与链接中的问题类似。你会有3张桌子。
表1
User_ID
Name
PK(User_ID)
表2
Contact_id
Address
Phone_Number
等等...
PK(Contact_id)
表3
User_ID
Contact_id
PK(User_ID, Contact_id)
在这里,您将表2中的ContactID作为autoinc列
此外,当在表3中插入时,如果存在重复,MySQL将抛出错误。
要选择所有用户联系人,请使用:
SELECT *
FROM Table_2 join Table_3
ON Table_2.Contact_id = Table_3.contact_id
WHERE Table2.User_id = <userid>
或者,如果您需要特定名称,那么
SELECT *
FROM Table_1 JOIN Table_2
ON Table_1.User_id = Table_2.User_id
JOIN Table_3
ON Table_2.Contact_id = Table_3.contact_id
WHERE Table1.name = <user name>
答案 2 :(得分:0)
有两个问题。
所以你有一个表tbl_contacts(user_id,contact_id)它们都是你的主键,所以你不会得到重复的数据。
我想列出user_id =?
的所有联系人SELECT * 来自tbl_contacts WHERE user_id =?
您可能有一些其他属性属于用户的联系人,您需要使用这些属性进行搜索。(例如:contact_name或contact_number),当您有一条查询结果时,您可以 - > ; DELETE FROM tbl_contact WHERE contact_id =?
如果这不是您想要的答案,请澄清您的问题。