1

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

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

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

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

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

过早的工作示例在这里

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

选择articlearticle_id从哪里来。article_ = '1' AND ( LIKE '%%' OR LIKE '%%' OR LIKE '%%') UNION ALL SELECT 。 从内部连接到哪里。= '1' AND ( . = . AND . LIKE '%%')articleis_activecontenttitletagsarticlearticle_idkeywordsarticlearticleis_activearticlearticle_idkeywordsarticle_idkeywordskeywordtext

表格article

  • article_id(基本的)
  • is_active
  • title
  • themonth
  • theyear

桌子article_author

评论:此表仅供参考作者详细信息在另一个表中。所以这些 id(s) 仅供参考。

  • article_author_id(基本的)
  • author_id
  • article_id

桌子article_categories

评论:此表仅供参考,类别详细信息在另一个表中。所以这些 id(s) 仅供参考。

  • article_categories_id(基本的)
  • article_id
  • categories_id

桌子insights

评论:此表仅供参考,类别详细信息在另一个表中。所以这些 id(s) 仅供参考。

  • insights_id(基本的)
  • article_id
  • read_time

桌子keyword

评论:此表仅供参考,类别详细信息在另一个表中。所以这些 id(s) 仅供参考。

  • keyword_id(基本的)
  • article_id
  • keywordtext

希望!我已经正确格式化了,所以每个人都可以理解!

4

2 回答 2

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。

于 2012-09-27T10:04:44.430 回答
0

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

这是我想出的解决方案

选择articlearticle_idFROM articleWHERE $cond ( contentLIKE '%$term%' OR titleLIKE '%$term%' OR tagsLIKE '%$term%') AND articlearticle_idIN (SELECT article_categories. article_idFROM article_categoriesWHERE categories_idLIKE '$cat') AND article. article_idIN (SELECT article_author. article_idFROM article_authorWHERE author_idLIKE '$author')

联合所有选择articlearticle_idFROM keywordsINNER JOIN articleWHERE $cond ( article. article_id= keywords. article_idAND keywords. keywordLIKE '%$term%') AND article. article_idIN (SELECT article_categories. article_id FROM article_categoriesWHERE categories_idLIKE '$cat') AND article. article_idIN (SELECT article_author. article_idFROM article_authorWHERE author_idLIKE '$author')

于 2012-09-28T07:46:07.927 回答