У меня есть запрос, который выполняется 1000 раз, который я пытаюсь оптимизировать, используя подготовленные операторы:
$query = "SELECT day, ticker, SUM(score*mod) as shares FROM indicators, modifiers WHERE indicators.dex=modifiers.dex AND ticker='$t' GROUP BY day, ticker HAVING shares>=$s";
Когда я обычно запускаю запрос:
$transactions = $dbm->query($query);
Я получаю желаемый набор результатов.
Однако, когда я преобразую его в готовое утверждение
$stmt = $db->prepare("SELECT day, ticker, SUM(score*mod) as shares FROM indicators, modifiers WHERE indicators.dex=modifiers.dex AND ticker=? GROUP BY day, ticker HAVING shares>=?");
и запустите:
$stmt->execute(array($t, 100));
похоже, что он не может отфильтровать условие, указанное в предложении HAVING (поэтому я получаю результаты, если доля меньше 100).
Это ошибка / ограничение SQLite или я что-то не так делаю?
Все остальные мои запросы работают нормально при преобразовании в подготовленные операторы ...