group by - How to combine WHERE and HAVING in a MySQL query -


how write query mysql filter out total pay less zero. have tried different commands using 'having' can't figure out proper syntax.

this command:

select tickets.idno, tickets.pay, tickets.material tickets ( tickets.pay <> 0  or  tickets.material <> 0 ) ,  tickets.district = 'ho'  , tickets.datepaid null   order tickets.name 

with result set:

ho0045  -140    0 ho2203  -45     0 ho2411  -5      0 ho2411  20      0 ho3448  -156    0 ho2519  2000    0 ho0075  -300    0 ho1669  -55     0 ho2666  -200    0 ho2666  -200    0 ho3447  -400    0 ho3447  400     0 

this result now, needs eliminate records total pay + total material rows given idno less zero. example; rows ho2411 , ho2519 should appear not rest.

having meant filter out whole groups, that, need reduce query group by. unfortunately can't reverse grouping operation after filtering groups.

so have subquery filter groups, join result table find rows corresponding idno:

select t.idno, t.pay, t.material tickets t inner join (   select idno, sum(pay) pay, sum(material) material   tickets   group idno   having pay + material < 0 ) total using (idno) t.district = 'ho' , t.datepaid null   order t.name; 

Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -