1

我为关键字设置了一个数据库表。列是 -

关键字ID | 关键字1 | 关键字2 | 关键字3 | 关键字4 | 问题ID

我想通过网站为用户提供查找问题并进行编辑的功能。我认为目前最好的方法是让用户通过输入关键字来搜索问题。当我使用

SELECT * FROM keywords WHERE keyword1="first_search_word" 

它有效,但是当我尝试相同但

WHERE keyword2="first_search_word" 

它不返回任何东西,即使它们存在。我也尝试使用OR(or ||) 但也找不到任何相关信息。

4

2 回答 2

4

与关键字 1 相关的关键字 ID 是什么?

无论如何,这不是解决您的问题的正确方法。听起来您想要每个问题都可以与多个标签相关联的标签,对吗?这称为多对多关系,需要超过 1 个表。你会需要:

  • 带有 2 列 tagId 和 tag 的标签表
  • 一个至少有 2 列的问题表,questionId 和 question
  • 带有 2 列 tagId 和 questionId 的 tags_questions 连接表。

要查找具有特定标签的问题,首先在标签表中查找 tagId。然后做一个SELECT questionId from tags_questions where tagId = $tagId. 要根据关键字而不是特定标签进行查找,您可以这样做SELECT questionId FROM tags_questions WHERE tagId IN (SELECT tagId FROM tags WHERE tag LIKE "%{$keyword}%")

于 2012-07-08T00:23:22.430 回答
1

当我使用

SELECT * FROM keywords WHERE keyword1="first_search_word"

它有效,但是当我尝试相同但

WHERE keyword2="first_search_word"

它不返回任何

但你也说

列是keywordID、keyword1、ky2、ky3、ky4、questionID

因此,您实际上并没有一个名为的列keyword2,因此没有匹配项也就不足为奇了。当然,除非您在问题中输入错误的某些值 - 如果是这种情况,您应该重写您的问题

于 2012-07-08T00:28:56.353 回答