我有一个产品表,我在该表下创建了字段名称:product_attributes
在该表下我将所有产品属性存储在 json 数据中,如下所示:
{"color":["Red","Green","yellow"],"size":["XL","M","XXL","L"],"Brand":["Nike","Fila","Addidus","Lotto"],"Gender":["Male","Female"]}
每个产品都有自己的属性,格式与上面给出的相同。有些产品具有相同的属性,有些则不同,例如:
{"color":["Green","Blue"],"size":["XXL","L"],"Brand":["Nike"],"Gender":["Male","Female"]}
现在我想根据上面提到的数据搜索产品:用户可以选择根据属性搜索产品,就像我们在电子商务网站上所做的那样
例子 :
--颜色:(红色或绿色)AND 尺寸=(XXL或 XL) AND 性别=(男)
--尺寸:(XL)和 颜色:(黄色)和 品牌:(耐克或乐透)
所以基于上面的例子,用户可以根据他的要求搜索任何东西,所以我需要一个 MySQL 查询,如果在任何产品下找到,它会根据选定的属性返回数据
请查看产品表结构:
CREATE TABLE `products` ( `id` int(11) NOT NULL,`product` varchar(255) NOT NULL,`product_attributes` longtext NOT NULL,`price` int(11) NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- 为表转储数据products
INSERT INTO `products` (`id`, `product`, `product_attributes`, `price`) VALUES(1, 'product 1', '{\"Color\":[\"White\",\"Red\"],\"Size\":[\"Large\",\"XL\"],\"Brand\":[\"Nike\",\"Lotto\"],\"Gender\":[\"Female\",\"Male\"]}', 12),(2, 'product 2', '{\"Color\":[\"White\"],\"Size\":[\"XL\"],\"Brand\":[\"Fila\"],\"Gender\":[\"Female\"]}', 21),(3, 'Product 3', '{\"Color\":[\"White\",\"Red\",\"Black\"],\"Size\":[\"Large\",\"XL\"],\"Brand\":[\"Fila\",\"Addidus\"],\"Gender\":[\"Female\"]}', 15),(4, 'Product 4', '{\"Color\":[\"White\",\"Red\"],\"Size\":[\"Large\"],\"Brand\":[\"Fila\"],\"Gender\":[\"Male\"]}', 18);
提前致谢。