You should move fabric_texture out to a new table where everything is in its own column.
CREATE TABLE fabric_texture (
item_id INT,
fabric VARCHAR(32),
percentage INT,
UNIQUE KEY (item_id, fabric)
);
Then you can do a query:
SELECT t1.item_id
FROM fabric_texture AS t1
JOIN fabric_texture AS t2 ON t1.item_id = t2.item_id
WHERE t1.fabric = 'cotton' AND t1.percentage > 50
AND t2.fabric = 'polyester' AND t2.percentage < 20
To get other details about the item, you can join this to your main items table.
The advantage of this schema over columns in the original table for cotton, polyester, etc. is that it doesn't require you to hard-code the fabric names into the table structure. If a new fabric comes out, you can just add new rows with it for those products.
cottonorpolyeste, or do you need to specifically search for the percent values? It would help if you edited your post to provide more sample rows together with a sample query rowset you would like to return.id | fabric | percentage.