簡體   English   中英

如何在Mysql中實現搜索查詢

[英]How can I Implement Search Query in Mysql

我想基於這些表在我的應用程序中實現搜索功能。

我在搜索頁面上有5個字段

  1. 輸入框-關鍵字或標題中的任何單詞
  2. 作者-選擇框(author_id將作為值傳遞給函數)
  3. 類別名稱-選擇框(category_id將作為值傳遞給函數)
  4. 當月-從1-12中選擇框
  5. 年-從2000年到2012年的精選盒子

我想根據這些規則創建搜索查詢,

  1. 結果數組將按insights排序。 read_time ,(已閱讀文章的次數)
  2. 只想拿到article article_id

早熟的工作實例在這里

我正在運行以下查詢以獲取但它不完整https://leader-people.com/search

SELECT article article_id來自article WHERE article is_active =' is_activecontent類似'%%'或title類似'%%'或tags類似'%%')UNION ALL SELECT article article_id FROM keywords INNER JOIN article WHERE article is_active = '1' AND( articlearticle_id = keywordsarticle_idkeywordskeywordtext LIKE '%%')

表格article

  • article_id (PRIMARY)
  • is_active
  • title
  • themonth
  • theyear

article_author

注釋:此表僅供參考,作者詳細信息在另一個表中。 因此,這些ID僅供參考。

  • article_author_id (PRIMARY)
  • author_id
  • article_id

article_categories

注釋:此表僅供參考,其他表中有詳細信息。 因此,這些ID僅供參考。

  • article_categories_id (PRIMARY)
  • article_id
  • categories_id

insights

注釋:此表僅供參考,其他表中有詳細信息。 因此,這些ID僅供參考。

  • insights_id (PRIMARY)
  • article_id
  • read_time

TABLE keyword

注釋:此表僅供參考,其他表中有詳細信息。 因此,這些ID僅供參考。

  • keyword_id (PRIMARY)
  • article_id
  • keywordtext

希望! 我已經正確格式化了,以便每個人都可以理解!

這可能會幫助您完成任務:

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

在奮斗了6.7個小時之后,我驚訝於它是如此的簡單:-(

這是我想出的解決方案

SELECT article article_id來自article $ cond( content類似'%$ term%'或title類似'%$ term%'或tags類似'%$ term%')的AND article article_id IN(SELECT article_categoriesarticle_id FROM article_categories WHERE categories_id LIKE '$貓')和article article_id IN(SELECT article_authorarticle_id FROM article_author WHERE author_id LIKE '$作家')

UNION ALL SELECT article article_id FROM keywords INNER JOIN article ,其中$ COND( articlearticle_id = keywordsarticle_idkeywordskeyword LIKE '%$長期%')和article article_id IN(SELECT article_categoriesarticle_id FROM article_categories WHERE categories_id LIKE '$貓')和article article_id IN(SELECT article_authorarticle_id FROM article_author WHERE author_id LIKE '$作家')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM