Тут мое больное воображение напридумывало кое-чего, может поможет ))
Вариант 1: Все данные фильтруем через запрос. Подзапрос возвращает таблицу с айдишниками и количеством совпадений для каждого из них. По скольку мы указали три параметра, то далее пишем HAVING kol=3, это отбросит id, у которых совпадений меньше.
SELECT pod_value.prod_id,pod_value.value FROM pod_value,(SELECT COUNT(*) as kol, prod_id FROM pod_value WHERE value IN('10л','Накопительный','Железный') GROUP BY prod_id HAVING kol=3) as cnt WHERE pod_value.prod_id=cnt.prod_id
Для удобства можно немного изменить запрос и выводить так:
$result=mysql_query("SELECT tovar_table.id,tovar_table.name_tovar,GROUP_CONCAT(value) as pole FROM tovar_table,pod_value,(SELECT COUNT(*) as kol, prod_id FROM pod_value WHERE value IN('10л','Накопительный','Железный') GROUP BY prod_id HAVING kol=3) as cnt WHERE pod_value.prod_id=cnt.prod_id AND pod_value.prod_id=tovar_table.id GROUP by pod_value.prod_id");
while($r=mysql_fetch_assoc($result)) {
$r1=explode(',',$r['pole']);
sort($r1);
echo $r['id']." ".$r['name_tovar']." ".$r1[0]." ".$r1[1]." ".$r1[2]."<br>";
}
Вариант 2: Выбираем все записи, потом фильтруем в скрипте.
$result=mysql_query("SELECT tovar_table.id,tovar_table.name_tovar,GROUP_CONCAT(value) as pole FROM pod_value JOIN tovar_table ON tovar_table.id=pod_value.prod_id GROUP BY prod_id");
while($r=mysql_fetch_assoc($result)) {
$r1=explode(',',$r['pole']);
if(in_array('10л',$r1)&&in_array('Накопительный',$r1)&&in_array('Железный',$r1)) {
sort($r1);
echo $r['id']." ".$r['name_tovar']." ".$r1[0]." ".$r1[1]." ".$r1[2]."<br>";
}
}