如何将一行MySQL数据库表链接到另一个表中的另一行

时间:2014-01-19 17:00:11

标签: php mysql sql database

我知道这没什么意义......而且我是使用MySQL的新手...... 我在这里要做的是,将一个表行链接到另一个表行... 举个例子,有两个表.. 一个表用于用户注册,同一个表用于登录... 下一个表是针对用户帖子的......比如状态更新和所有...

这是我想要的......

user_log_info:-
id ( primary )
firstname
lastname
username
email
password

posts:-
id ( primary )
userposts
posted_by
date_post

所以你可以看到,我希望user_log_info表的用户名被自动复制到posts posted_by行......我不知道如何归档这个...

1 个答案:

答案 0 :(得分:1)

你没有给出足够的信息来给出完整的答案,但我会尽力用你所给的。

+-----------------+ +-----------------+
| users_log_info  | | posts           |
+-----------------+ +-----------------+
| int ID (primary)| | int ID (primary)|
+-----------------+ | int posted_by   |
                    +-----------------+

(我离开了与您似乎想要做的事情无关的字段,我只是简化它)

published_by是非官方的foreign key,或引用另一个表的主键。

要插入,您可以做的就是:

INSERT INTO posts(...., posted_by) VALUES (...., user.ID)

其中....引用您要插入的所有其他信息

然后,查找有关发布内容的人的信息:

SELECT * FROM users_log_info WHERE ID = Post.posted_by

或者如果您想查找用户的所有帖子:

SELECT * FROM posts WHERE posted_by = user.ID

因此,如果用户ID 3的Bob希望发布“Hi”,您可以这样做:

INSERT INTO posts(content, posted_by) VALUES('Hi', bob.ID)

然后当您输出帖子时,您可能会这样做:

post = (however you choose the post to put on the page)
userPosted = SELECT * FROM users_log_info WHERE ID = post.posted_by

print post.content + " posted by: " userPosted.Name

基本上,字段“posting_by”是“发布”任意数字,但您知道它链接或引用用户。它通过引用“ID”(这是users_log_info的主键)来实现,因此当您想从users_log_info获取信息时,您需要做的就是选择具有与“posting_by”对应的ID的条目。我建议将其命名为posterID,以便于识别。