如何获取包含一个或多个关键字的页面列表 - MySQL 和 PHP


How can I get a list of pages that contain one or more keyword - MySQL and PHP

我是SQL的新手,我希望有人可以帮助我找到一个查询来实现以下功能:

我有两个数据库表。一个称为页面,是我网站上的页面列表。另一个表称为关键字,包含关键字以及可以找到关键字的相应页面。

表结构如下

Page                       Keywords
+-------+------+           +-------+-------+
| Pg_ID | URL  |           | Word  | Pg_ID |
+-------+------+           +-------+-------+

例如,可以在关键字表中找到以下条目:

  • 字1 - 页1
  • 字1 - 页2
  • 字2 - 页1
  • 字2 - 页2
  • 字3 - 页3

我从搜索框中获取查询并将其拆分为关键字。

例如,搜索查询中的关键字为:word1、word2

如何返回包含这些关键字的页面列表,在本例中为 page1、page2?

有人可以解释一下我如何创建一个SQL查询来做到这一点吗?

谢谢!

如果我能理解您的设置, 通过以下 SQLFiddle,我相信我已经完成了您需要完成的工作。 没有列名,我只是假设并编造了一些。

SQL 数据

CREATE TABLE pages(
  page_id INT NOT NULL DEFAULT 1,
  page_keyword VARCHAR(50) NOT NULL
  );
INSERT INTO pages VALUES (1,'cool'),
  (1,'awesome'),
  (2,'lame'),
  (2,'waffle'),
  (3,'holy'),
  (3,'pope'),
  (3,'waffle');

查询

SELECT * FROM pages WHERE page_keyword = 'waffle';

收到的数据

PAGE_ID       PAGE_KEYWORD
2              waffle
3              waffle