我目前正在寻找一个搜索功能,用户可以通过主持演出的乐队名称或演出本身的位置来搜索演出。我遇到的问题是搜索的位置部分,我想搜索我存储的城镇,县和国家/地区字段,以便说如果演出地点是“英格兰约克郡的利兹”,用户搜索“英语“它会匹配,因为它发现它在国家领域。如果他们因为在利兹的比赛而搜索“编辑”,那么也是一样。在查询中搜索多个列
我知道这可以通过在查询中使用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>
正如我在运行查询后发现(事先应已知)返回很多重复。然而,看着这个查询,你可以看到我试图获得它的方式完全是错误的。任何关于如何改善这方面的知识或建议,将不胜感激。
“我一直在寻找最佳实践的建议”不要用'选择*':) – Travis 2013-04-22 12:06:27
好点,现在不适合编辑。 – Banny 2013-04-22 12:15:47
如果你只是做了一个独特的选择? – 2013-04-22 12:53:44