Речь идет об использовании столбца (который создается в запросе) в качестве критерия условия.
Существует две таблицы с именами транзакций и транзакций.
В транзакции есть уникальная информация для транзакции, такая как дата, контрагент и т. Д. c.
В транзакциях есть статьи, которые используются в транзакции. Таких как продукт, количество, цена и т. Д. c. И в транзакции транзакций есть столбец «транзакция», который ссылается на транзакции. Показывает, какой транзакции принадлежит движение.
В запросе я создал значение totalPrice с суммой количества * цена каждого движения, принадлежащего транзакции. .
Все работает отлично, но последний параметр предложения WHERE. Если я удаляю часть «AND totalPrice> 10», это дает мне все, включая totalPrice и totalQuantity транзакции. Но если я помещаю «AND totalPrice> 10» в конец, он возвращает следующую ошибку:
- # 1054 - Неизвестный столбец «totalPrice» в «предложении where»
SELECT
`transactions`.id,
`transactions`.type,
`transactions`.date,
`transactions`.VAT,
`transactions`.currency,
`companies`.name AS counterparty,
COALESCE
(sum(`transactionmovements`.price*`transactionmovements`.quantity)
+(`transactions`.shippingQuantity*`transactions`.shippingPrice)) as totalPrice,
COALESCE
(sum(`transactionmovements`.quantity)) as totalQuantity
FROM
`transactions`
LEFT JOIN `companies` ON `transactions`.counterparty = `companies`.id
LEFT JOIN `transactionmovements` ON `transactions`.id=`transactionmovements`.transaction
WHERE ( `transactions`.type = 'p' OR `transactions`.type = 'r' OR `transactions`.type = 's' OR `transactions`.type = 't')
AND
(`transactions`.date BETWEEN IFNULL('','1900-01-01') AND IFNULL('2020-02-14',NOW()))
AND
totalPrice > 10
GROUP BY `transactions`.id
ORDER BY id desc
LIMIT 10
Я пытался используя всю математическую операцию в предложении WHERE, но без выгоды. Я пытался использовать HAVING с WHERE, но не смог с этим справиться.
Последнее решение, которое у меня есть, это запустить его без фильтрации по totalPrice и сохранить в массиве php. Затем фильтр в массиве, но там я не могу использовать LIMIT, поэтому массив будет очень большим.