我想基于这些表在我的应用程序中实现搜索功能。
我在搜索页面上有5个字段
我想根据这些规则创建搜索查询
insights
排序。read_time
,(文章被阅读的次数)article
。article_id
这里有成熟的工作实例
我正在运行以下查询以获取但不完整 https://leading-people.com/search
SELECT
article
。article_id
FROMarticle
WHEREarticle
。is_active
='1'和(content
LIKE'%%'或title
LIKE '%%'或tags
LIKE'%%')UNION ALL SELECTarticle
。article_id
FROMkeywords
INNER JOINarticle
WHEREarticle
。is_active
='1' AND(article
。article_id
=keywords
。article_id
ANDkeywords
。keywordtext
LIKE'%%')
表article
COLUMNS
article_id
(主要)is_active
title
themonth
theyear
表article_author
评论:此表仅供参考作者详细信息在另一个表中。所以这些id仅供参考。
柱
article_author_id
(主要)author_id
article_id
表article_categories
评论:此表仅供参考类别详细信息在另一个表中。所以这些id仅供参考。
柱
article_categories_id
(主要)article_id
categories_id
表insights
评论:此表仅供参考类别详细信息在另一个表中。所以这些id仅供参考。
柱
insights_id
(主要)article_id
read_time
表keyword
评论:此表仅供参考类别详细信息在另一个表中。所以这些id仅供参考。
柱
keyword_id
(主要)article_id
keywordtext
希望!我已经正确格式化,所以每个人都可以理解!
答案 0 :(得分:0)
这可能会帮助您完成任务:
$keyword_mysql= mysql_real_escape_string($keyword);
SELECT article.article_id
FROM article
LEFT JOIN insights ON(article.article_id=insights.article_id)
WHERE article.is_active = '1' AND (content LIKE '%{$keyword_mysql}%' OR title LIKE '%{$keyword_mysql}%' OR tags LIKE '%{$keyword_mysql}%')
UNION DISTINCT
SELECT article.article_id
FROM keywords INNER JOIN article WHERE article.is_active = '1' AND (article.article_id = keywords.article_id AND keywords.keywordtext LIKE '%{$keyword_mysql}%')
LEFT JOIN insights ON(article.article_id=insights.article_id)
ORDER BY insights.read_time
您还可以使用反斜杠转义$ keyword_mysql中的下划线和百分比。
如果read_time列不是所选字段的一部分,我不确定排序是否有效。如果没有,请将其添加到选定的字段和ORDER BY read_time。
答案 1 :(得分:0)
经过6,7个小时的努力,我很惊讶它很简单: - (
这是我提出的解决方案
SELECT
article
。article_id
FROMarticle
WHERE $ cond(content
LIKE'%$ term%'或title
LIKE'%$ term%'或tags
LIKE'%$ term%') 和article
。article_id
IN(SELECTarticle_categories
。article_id
FROMarticle_categories
WHEREcategories_id
LIKE'$ cat')和article
。article_id
IN(SELECTarticle_author
。article_id
FROMarticle_author
WHEREauthor_id
LIKE'$ author')UNION ALL SELECT
article
。article_id
FROMkeywords
INNER JOINarticle
WHERE $ cond(article
。article_id
=keywords
。article_id
和keywords
。keyword
LIKE'%$ term%')ANDarticle
。article_id
IN(SELECTarticle_categories
。article_id
FROMarticle_categories
WHEREcategories_id
LIKE'$ cat')ANDarticle
。article_id
IN(SELECTarticle_author
。article_id
FROMarticle_author
WHEREauthor_id
LIKE'$ author')