Посмотрите на Диаграмма приоритета оператора MySQL .Вы заметите, что AND
имеет более высокий приоритет по сравнению с OR
, поэтому ваш запрос становится примерно таким:
SELECT SUM(totalcollected)
FROM accounting
WHERE
(
agent = '$agentid' AND
DATE(DATE) = DATE(NOW()) AND
amount1type = 'Cash'
)
OR
(
amount2type = 'Cash'
)
Обратите внимание, что дата учитывается, когда (i) agent = $ agent (ii)) сумма1 тип = наличными;но строки, которые имеют sum2type = cash, всегда будут возвращаться независимо от даты.Вы должны добавить скобки, чтобы сообщить MySQL, как именно должен обрабатываться оператор where:
SELECT SUM(totalcollected)
FROM accounting
WHERE
agent = '$agentid' AND
DATE(DATE) = DATE(NOW()) AND
(
amount1type = 'Cash' OR amount2type = 'Cash'
)