我目前正在开发一个搜索功能,用户可以通过主持演出的乐队的名称或演出本身的位置来搜索演出。我遇到的问题是搜索的位置部分,我想搜索我存储的城镇、县和国家字段,以便说明演出地点是否是“英格兰约克郡利兹”并且用户搜索“ Eng" 它会匹配,因为它在国家/地区字段中找到了它。如果他们因为在利兹的比赛而搜索“eds”,同样适用。
我知道这可以通过在查询中使用 Group By 方法来实现,但是,我一直在寻找有关最佳实践的建议以及如何应用它,因为我以前没有使用过 Group By。
这是我开始的错误查询:
<cfquery datasource="#datasource#" name="findgigs">
Select artist_id, gig_id, gig_artistid, gig_town, gig_county, gig_country
From artists, gigs
Where artist_id = gig_artistid
<cfif IsDefined("URL.search")>
And gig_town LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%>
Or gig_county LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%>
Or gig_country LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%>
</cfif>
</cfquery>
正如我在运行查询后发现的(应该事先知道)它返回许多重复项。但是,查看该查询,您可以看到我试图获取它的内容完全以错误的方式完成。任何有关如何改进这一点的知识或建议将不胜感激。