php - 搜索多个表

标签 php mysql search

我的新闻网站有一个可用的搜索功能,但我一直在重写我的代码并重组我的数据库以添加更多功能。以前,我想要搜索的所有信息都可以在一张表中找到。现在有一个表用于存储新闻文章的基本数据,第二个表包含文本(每篇文章可能有多行)。第一个搜索功能很简单:

SELECT * 
FROM pages 
WHERE page_status != '99' 
AND (page_title LIKE '%".mysql_real_escape_string($words)."%' OR page_text LIKE '%".mysql_real_escape_string($words)."%') 
ORDER BY page_onlinedate DESC

现在我需要查询多个表,因为“pages.page_text”不再存在。它移至名为“page_content.content_text”的第二个表,并通过“page_content.content_page_id”链接到“pages.page_id”。

我不知道如何在不重复的情况下显示结果(查询每个表一次,并且由于 page_content 中可能有多行,因此如果搜索的单词,它可能会显示同一篇文章四次)可以在标题和每个文本行中找到一次)。我想这必须通过表连接来完成,但是连接让我真的很困惑。

再一次,我的数据库布局要清晰:

PAGES
page_id
page_title
page_onlinedate
...

PAGE_CONTENT
content_id
content_text
content_page_id 

感谢您的帮助。

最佳答案

请尝试这个:

select p.*, pc.* 
from pages p join page_content pc on p.page_id = pc.content_page_id 
where p.page_status != '99' 
  and (p.page_title like '%" . mysql_real_escape_string($words) . "%' or pc.content_text like '%" . mysql_real_escape_string($words) . "%') 
group by p.page_id 
order by p.page_onlinedate desc;

关于php - 搜索多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019433/

相关文章:

java - 使用 php 和 android 将小尺寸图像上传到服务器

mysql - SQL查询以查找每个人都超过特定年龄的所有房屋

PowerShell 将箭头键绑定(bind)到命令历史搜索

mysql - 递归时间查询

php - CI 数据映射器 : Iterate parent child

algorithm - 状态空间搜索 : A* and Breadth First Search

c++ - 查找 vector 是否包含第二个元素等于 X 的对

php - Magento DataFlow 集成和模块开发资源?

php - 无法获取 Bootstrap 布局上列的内容以与列左侧对齐

php - 我应该使用排队系统来处理付款吗?