У меня есть запрос, который запускается 1000s раз, которое я пытаюсь оптимизировать, используя подготовленные заявления:SQLite - ограничение? Ошибка? Подготовленные отчеты с предложения HAVING
$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);
I получить желаемый набор результатов.
Однако, когда я преобразовать его в подготовленное заявление
$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 или я что-то не так?
Все мои другие запросы отлично работает при преобразовании в подготовленных инструкций ...
Я также пробовал жестко кодировать количество акций в подготовленный оператор, и он работал нормально. Это происходит только тогда, когда переменная. – 2009-07-21 21:19:06
Вы используете PDO_SQLITE? – hobodave
да, я использую расширение sqlite pdo для sqlite3. – 2009-07-21 21:27:18