Потому и говорю «учи SQL». Ты не совсем понимаешь

Потому и говорю «учи SQL». Ты не совсем понимаешь принципа работы базы данных. Каждая выбранная строка должна соответствовать всем указанным условиям. Возьми из всех своих строк только одну. Будет ли в ней name равняться сразу и 'shape' и 'processing_edge'? Это физически не возможно. У тебя должно быть примерно так:

WHERE  (
( `modResource`.`deleted` = 0 AND `modResource`.`hidemenu` = 0 AND `modResource`.`published` = 1 )  
AND `modResource`.`parent` IN (156,178,179,180,181,182,183,184,185,186,187,188,189,190,191)
AND  (
( `TemplateVar`.`name` = 'shape' AND `TVResources`.`value` = 'rectangle' )  OR ( `TemplateVar`.`name` = 'processing_edge' AND `TVResources`.`value` = '10' )
)
)