昨天,使用產品銷售報告的女士來找我一個問題。該報告會返回我們銷售的所有產品的列表,並列出特定時間段的計數。該報告在一個產品中的結果太多。產品「銷售頁面」一行也計入「無限銷售頁面」我們銷售的升級產品。MYSQL like子句找到太多匹配
這是給了錯誤的結果代碼:
Select count(WorkOrderId) as cnt from tblworkorder
where PlanName LIKE '%{$row['PlanType']}%' and RecTime BETWEEN '$stime' and '$etime'
的問題與外卡的比賽做。但是,由於我的前任如何設置分貝,這是必要的。銷售可以是多個產品,每個產品都按名稱列在PlanName列中,並用逗號分隔。例如,
PlanName = Sale Page, Domain Name,
PlanName = Link, Unlimited Sale Page,
而正確答案是1每行,當前的代碼將返回:
Domain Name = 1
Link = 1
Sale Page = 2
Unlimited Sale Page = 1
如果產品是「銷售頁面-無限」我可以把代碼添加逗號到它正在搜索的計劃名稱的末尾(例如「銷售頁面」)。由於問題出現在前面(我不能保證銷售頁面將始終是列表中的第一個),但這並不能解決此問題。但它可能會在未來避免類似的問題。
如果沒有重構數據庫以在計劃按數字列出(例如「P4,P16,P25」或「P1,P11」)或連接表中的列,我如何才能找到銷售頁面當我運行報告時無限銷售頁面在線上?
這甚至加快了!如果我被要求重寫這個項目,我**將會在所有地方正常化。但在那之前,潛在的副作用太多了。我沒有寫這個應用程序開始。 – 2012-03-29 16:23:54