我有一个用于发布新文章的表格,并且使用while循环打印表格的内容。
现在我希望观众能够对文章发表评论,因此我在while循环中创建了另一个评论表和文章下的表单,但每当有人对该文章发表评论时,评论都会显示在所有文章中。
因为文章和评论在一个while循环中,并且表之间没有关系。 表格如下:
content_posts( id int primary auto, subject varchar, postby varchar, 约会日期, 内容varchar )
评论( id int primary auto, 名称varchar, 电子邮件varchar, 身体变形 )
答案 0 :(得分:1)
您可以尝试通过aticle id列链接表格:例如:带有列ID的文章和带有名为article_id的字段的COMMENTS,其中包含相应文章的ID。 然后你可以像这样使用INNER JOIN
SELECT * FROM ARTICLES as t1 INNER JOIN COMMENTS as t2 ON t1.id = t2.article_id
希望它有所帮助!
答案 1 :(得分:1)
如果你想建立一种关系,你必须确定你的关系感。
关系的每一方都与唯一的实体相关。例如,现在,您将用户定义分为两部分:
一个配置文件只有一个处理程序,一个处理程序只有一个配置文件。
在这种情况下,每个表都要添加一个带有每个实体标识符的外键。
您的博客所拥有的案例。一篇文章有很多评论,一篇评论只有一篇文章。
因此,在comment
表中,您必须添加外键,该外键是指向article.id
的链接。
然后,要选择一篇文章中的注释,您必须创建一个WHERE:
SELECT * FROM comment_table WHERE id_article = 1 -- for your first article,
如果您要从文章表和加载评论表中的信息,则必须使用JOIN
命令:
SELECT comment_table.*, article_table.* FROM article_table
JOIN comment_table ON article_table.id = comment_table.id_article
每个实体都可以与其他实体相关联。例如,你为你的文章提供了标签:每个标签被分配给许多文章,每篇文章可以有许多标签。
在这种情况下,您必须创建一个只有tag_id
和article_id
的新表格。
要使用他的标签选择一篇文章,您必须进行双重加入:
SELECT article.*, tags.* FROM article_table article
JOIN tags_in_article tia ON tia.id_article = article.id
JOIN tag_table tags ON tia.id_tag = tag.id
WHERE article.id = 1
答案 2 :(得分:0)
您需要在文章表中定义主键(通常称为id),并在注释表中定义外键。然后使用该关键关系(在这种情况下为一对多)来确保仅显示与特定文章相关的评论。使用id,您将遍历查找匹配项的外键。