【问题标题】:How can I Implement Search Query in Mysql如何在 Mysql 中实现搜索查询
【发布时间】:2012-09-27 09:42:17
【问题描述】:

我想根据这些表在我的应用程序中实现搜索功能。

我在搜索页面上有 5 个字段

  1. 输入框 - 关键字或标题中的任何单词
  2. 作者 - 选择框(author_id 将作为值传递给函数)
  3. 类别名称 - 选择框(category_id 将作为值传递给函数)
  4. 月份 - 从 1 - 12 中选择框
  5. 年份 - 选择框从 2000 年到 2012 年

我想根据这些规则创建搜索查询,

  1. 结果数组将按insights.read_time排序,(文章被阅读了多少次)
  2. 只想得到article.article_id

这里是成熟的工作示例

我正在运行以下查询以获取但它不完整 https://leading-people.com/search

选择article.article_id FROM article WHERE article.is_active = '1' AND (content LIKE '%%' 或 title LIKE '%%' OR tags LIKE '%%') UNION ALL SELECT article.article_id FROM keywords INNER JOIN article WHERE article.is_active = '1' 与 (article.article_id = keywords.article_idkeywords.keywordtext LIKE '%%')

article

  • 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

希望!我已经把它的格式正确了,所以每个人都能理解!

【问题讨论】:

标签: php mysql


【解决方案1】:

这可能会帮助您完成任务:

$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。

【讨论】:

  • 提供的SQL不包含任何类别或作者,请帮我完成查询!
【解决方案2】:

苦苦挣扎了 6,7 小时后,我很惊讶它是如此简单:-(

这是我想出的解决方案

SELECT article.article_id FROM article WHERE $cond (content LIKE '%$term%' OR title LIKE '%$term%' OR tags LIKE '%$term% ') AND article.article_id IN (SELECT article_categories.article_id FROM article_categories WHERE categories_id LIKE '$cat') AND article.article_id IN (SELECT @987674336@.@9 FROM article_author WHERE author_id LIKE '$author')

UNION ALL SELECT article.article_id FROM keywords INNER JOIN articleWHERE $cond (article.article_id = keywords.article_id AND keywords.keyword LIKE '%$term%') AND article.article_id 输入(选择article_categories.article_id 来自article_categories WHERE categories_id 喜欢'$cat')和 article.article_id IN(选择 article_author.article_id FROM article_author WHERE author_id LIKE '$author')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 2010-10-20
    • 2017-04-15
    • 2014-11-25
    • 2014-01-17
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多