I have this query:
SELECT * FROM (`users`) WHERE `date_next_payment` <= \'2011-02-02\'
AND `status` = \'active\' OR `status` = \'past due\'
>
It's because when you are not using the parentheses you actually saying :
`date_next_payment` <= '2011-02-02' AND `status` = 'active'
OR
`status` = 'past due'.
Which means that when status` = 'past due' this record would be shown too. regarless of passing the other conditions.
But when you do use parentheses you require:
`date_next_payment` <= '2011-02-02'
AND to pass one of the two other conditions.