私は現在、ユーザーがギグをホストしているバンドの名前またはギグ自体の場所でギグを検索できる検索機能に取り組んでいます。私が抱えている問題は、検索の場所の部分です。保存した町、郡、および国のフィールドを検索して、ギグの場所が「リーズ、ヨークシャー、イングランド」であり、ユーザーが「 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>
クエリを実行した後に発見したように(事前に知っておく必要があります)、多くの重複が返されます。ただし、そのクエリを見ると、取得しようとしているものが完全に間違った方法で行われていることがわかります。これを改善する方法に関する知識やアドバイスをいただければ幸いです。