[英]How can I Implement Search Query in Mysql
我想基於這些表在我的應用程序中實現搜索功能。
我在搜索頁面上有5個字段
我想根據這些規則創建搜索查詢,
insights
排序。 read_time
,(已閱讀文章的次數) article
。 article_id
早熟的工作實例在這里
我正在運行以下查詢以獲取但它不完整https://leader-people.com/search
SELECT
article
。article_id
來自article
WHEREarticle
。is_active
='is_active
(content
類似'%%'或title
類似'%%'或tags
類似'%%')UNION ALL SELECTarticle
。article_id
FROMkeywords
INNER JOINarticle
WHEREarticle
。is_active
= '1' AND(article
。article_id
=keywords
。article_id
與keywords
。keywordtext
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%')的ANDarticle
。article_id
IN(SELECTarticle_categories
。article_id
FROMarticle_categories
WHEREcategories_id
LIKE '$貓')和article
。article_id
IN(SELECTarticle_author
。article_id
FROMarticle_author
WHEREauthor_id
LIKE '$作家')UNION ALL SELECT
article
。article_id
FROMkeywords
INNER JOINarticle
,其中$ COND(article
。article_id
=keywords
。article_id
和keywords
。keyword
LIKE '%$長期%')和article
。article_id
IN(SELECTarticle_categories
。article_id
FROMarticle_categories
WHEREcategories_id
LIKE '$貓')和article
。article_id
IN(SELECTarticle_author
。article_id
FROMarticle_author
WHEREauthor_id
LIKE '$作家')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.