O que você tem é uma tabela de propriedades. Quando você deseja testar várias propriedades de uma só vez, você precisa unir a tabela a si mesma:
SELECT c0.car_id
FROM table_cars AS c0
JOIN table_cars AS c1 ON c1.car_id=c0.car_id
JOIN table_cars AS c2 ON c2.car_id=c1.car_id
WHERE c0.name='MAKE' AND c0.value='FORD'
AND c1.name='COLOR' AND c1.value='SILVER'
AND c2.name='TOPSPEED' AND c2.value='200KM/H'
Ter o
id
substituto presente em uma tabela de propriedades é questionável. Não parece estar fazendo nada; cada propriedade não é uma entidade própria. A menos que o id
é exigido por algum outro elemento, eu me livraria dele e faria car_id, name
a chave primária (uma chave primária composta).