我有1個輸入字段供用戶輸入商家名稱,城市和州或郵政編碼。我希望能夠撤回正確的數據,但現在我得到不正確的結果。試圖編寫查詢來查看業務和地址信息
例如,如果有人搜索「ERICS」,它會返回正常,但如果有人搜索「ERICS ROCHESTER MN」,它將返回ROCHESTER,MN的所有結果。我希望它在這種情況下不返回任何結果。順便說一句,我解析出數據,所以我在查詢中傳遞了多達4個值。商業名稱,城市,州,郵編。
如何修改我的查詢,以便它能給我正確的結果?我可以以某種方式檢查查詢哪些變量不爲空?
架構
業務
business_id | name | city | state | zip
1 TOMS ROCHESTER MN 55906
2 BILLYs MINNEAPOLIS MN 55555
3 ERICS LAX WI 11111
評級
business_rating
br_id | business_id | rating_id
1 1 1
2 1 2
select b.business_id,
b.name,
b.city,
b.state,
b.zip
count(br.business_id) num_ratings,
round(avg(br.quality_id),2) quality_rating,
round(avg(br.friendly_id),2) friendly_rating,
round(avg(br.professional_id),2) professional_rating
from business b
Left Join business_rating br
On br.business_id = b.business_id
Left Join rating r
On r.rating_id = br.quality_id
And r.rating_id = br.friendly_id
where (upper(b.business_name) like '%ERICS%'
and upper(b.city) like '%ROCHESTER%'
and upper(b.state) like '%MN%'
and upper(b.zip) like '')
or (upper(b.city) like '%ROCHESTER%'
and upper(b.state) like '%MN%'
and upper(b.zip) like '')
or (upper(b.city) like '%ROCHESTER%'
and upper(b.state) like '%MN%')
or (upper(b.zip) like '')
group by id
我會看看solr。我也想到了4種不同的查詢,但我寧願將它放在1中。有一種方法可以做到這一點。 – Catfish 2011-06-02 23:58:44
我最終解析了數據,然後創建了4個不同的where子句並將它們設置爲一個變量。根據我傳遞給該方法的任何變量,確定我在哪裏使用了從句。 – Catfish 2011-06-20 19:05:49