繁体   English   中英

我需要哪种类型的加入?

[英]What type of join do I need?

对于注册页面,用户可以在其中输入他们的联系信息以及用户名和密码。 我有两个表,一个表用于用户名和密码,并带有一个名为contactinfo的外键,而我要与用户表一起加入的联系信息表? 外键和主键都应设置为自动递增吗?

谢谢

将两个主键都设置为自动递增。 将用户表中的外键添加到联系信息表中,然后完成。 外键永远不会自动递增,毕竟它们是要引用另一个表中的值。

请注意,如果您使用的是像Doctrine这样的ORM,则将自动为您处理usercontactinformation之间的关系。 否则,您应该首先插入您的联系信息,获取其生成的主键(例如,通过mysql_insert_id ),然后将其插入到user表中。

用户表应具有:

  • 用户ID(主要,自动递增)
  • 用户名
  • 密码

另一个表具有:

  • infoid(主要,自动递增)
  • userid(这会将该行链接到另一个表)
  • 还有你的数据

您应该使用“左联接”

LEFT JOIN关键字返回左表(table_name1)中的所有行,即使右表(table_name2)中没有匹配项。 (w3schools)

因此,我们有一个用户表作为“左表”,而信息有一个“右表”。 用户可能尚未设置信息,但是他/她有一个帐户。 所以我们有一个帐户(“左”),但不一定有信息(“右”)-LEFT JOIN听起来像是工作的联接

和您的SQL应该大致看起来像

SELECT "columns" FROM table1
LEFT JOIN table2 ON table1.userid = table2.userid

//where "columns" are the columns you want to get
//from the tables in "table.column" notation like: user.username or info.mobile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM