昨日、製品を使用している女性のレポートが私に問題をもたらしました。このレポートは、一定期間のカウントで販売しているすべての商品のリストを返します。 1つの製品でレポートの結果が多すぎます。製品「販売ページ」のラインも、当社が販売するアップグレード製品である「無制限販売ページ」をカウントしています。MYSQL like節があまりにも多くの一致を見つけた
これは間違った結果が得られたコードです:
Select count(WorkOrderId) as cnt from tblworkorder
where PlanName LIKE '%{$row['PlanType']}%' and RecTime BETWEEN '$stime' and '$etime'
問題はワイルドカード一致に関係しています。しかし、前任者がデータベースをどのようにセットアップしたかによって、それが必要になります。販売は複数の商品で、それぞれがPlanName列に名前でリストされ、コンマで区切られます。たとえば、正しい答えは、各ラインに1ですが、現在のコードが返されます
PlanName = Sale Page, Domain Name,
PlanName = Link, Unlimited Sale Page,
:私は、コードを持っている可能性があり
Domain Name = 1
Link = 1
Sale Page = 2
Unlimited Sale Page = 1
製品は「販売ページ・アンリミテッド」だった場合は、カンマを追加しますそれが検索しているプラン名の最後に追加します(例: "セールページ")。問題は正面から来ている(そして、私はセールページが常にリストの最初になるという保証はできない)、それはこの問題を解決しないだろう。しかし、それは将来同様の問題を防ぐかもしれない。
計画が番号(例: "P4、P16、P25"または "P1、P11")または結合表にリストされている列を持つようにデータベースを再構成することなく、レポートを実行すると、無制限の販売ページが表示されますか?
それもスピードアップしました。このプロジェクトを書き直すように頼まれれば、私は**これを全面的に標準化する予定です。しかしそれまでは、潜在的な副作用が多すぎます。私はこのアプリを書いていませんでした。 –