Ce que vous avez est une table de propriétés. Lorsque vous souhaitez tester plusieurs propriétés à la fois, vous devez joindre la table à elle-même :
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'
Avoir le substitut id
présent dans une table de propriétés est discutable. Il ne semble rien faire; chaque propriété n'est pas une entité en soi. Sauf si le id
est requis par un autre élément, je m'en débarrasserais et ferais car_id, name
la clé primaire (une clé primaire composite).