我需要什么类型的加入?

时间:2012-03-10 11:37:31

标签: php mysql

对于用户输入其联系信息及其用户名和密码的注册页面。我有两个表,一个是用户名和密码,一个外键叫做contactinfo,一个联系信息表,我想加入用户表?外键和主键是否也应设置为自动递增?

由于

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

用户的表应该有:

  • userid(primary,autoincrement)
  • 用户名
  • 密码

另一张表有:

  • infoid(primary,autoincrement)
  • 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