я бы делал так -
SELECT A.tovar_id, -- нужный нам ид товара
count( distinct A.data) -- кол-во уникальных значений data для каждого товара
FROM `таблица` AS A
WHERE A.data in ( "data6", "data7" ) -- сюда перечисляем нужный нам набор значений data
group by A.tovar_id
having count( distinct A.data) = 2 -- кол-во елементов нужного нам набор значений data
условие WHERE отсеет те товары, в которых нет ни одного нужного значения data вообще
а having отсеет те товары, в которых меньшее кол-во "одновременных" входжений data
если в списке одновременных значений не 2 а 3, 4 .. значения, то надо добавлять их в список и править число в последнем условии having