Вчера дама, которая использует проданный товар, подошла ко мне с проблемой. Отчет возвращает список всех продуктов, которые мы продаем, с подсчетом за определенный период времени. В отчете было слишком много результатов в одном продукте. Линия «страница продажи» продукта также учитывала «неограниченную страницу продажи» продукта обновления, который мы продаем.MYSQL как предложение найти слишком много матчей
Это код, который дал неправильные результаты:
Select count(WorkOrderId) as cnt from tblworkorder
where PlanName LIKE '%{$row['PlanType']}%' and RecTime BETWEEN '$stime' and '$etime'
Проблема связана с дикими спичек карт. Однако из-за того, как мой предшественник настроил db, это необходимо. Продажей может быть несколько продуктов, каждый из которых указан по имени в столбце PlanName, разделенных запятыми. Пример,
PlanName = Sale Page, Domain Name,
PlanName = Link, Unlimited Sale Page,
Хотя правильный ответ 1 на каждой строке, текущий код будет возвращать:
Domain Name = 1
Link = 1
Sale Page = 2
Unlimited Sale Page = 1
Если продукт был «Продажа Page-Unlimited» Я мог бы код добавить запятую до конца имени плана, которое он ищет (например, «Страница продажи»). Поскольку проблема возникает на фронте (и я не могу гарантировать, что Страница продажи всегда будет первой в списке), это не решит эту проблему. Но это может помешать подобной проблеме в будущем.
Без реструктуризации базы данных, чтобы иметь столбец, где планы перечислены по числу (например, «P4, P16, P25», или «P1, P11») или таблицу соединений, как я могу найти только страницу продажи, а не Неограниченная страница продажи в строке, когда я запускаю отчет?
Это даже ускорилось! И если меня попросят переписать этот проект, я ** буду нормализовать его повсюду. Но до тех пор слишком много потенциальных побочных эффектов. Я не писал это приложение для начала. –