Потому и говорю «учи 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' ) ) )