我不知道他们是如何做到的,但您可以通过以下方式实现:
CREATE TABLE product_facets (
product_id INTEGER NOT NULL,
facet VARCHAR(100) NOT NULL,
facet_value varchar(255) NOT NULL,
PRIMARY KEY (product_id,facet,facet_value),
KEY (facet,facet_value)
);
INSERT INTO product_facets VALUES (1, 'COLOR', 'Red');
INSERT INTO product_facets VALUES (1, 'PRICE_RANGE', 'Less than 200');
INSERT INTO product_facets VALUES (2, 'COLOR', 'Green');
INSERT INTO product_facets VALUES (2, 'PRICE_RANGE', 'From $200 to $500');
INSERT INTO product_facets VALUES (2, 'COLOR', 'Blue');
INSERT INTO product_facets VALUES (3, 'PRICE_RANGE', 'More than $1000');
SELECT facet, facet_value, count(*)
FROM product_facets f
INNER JOIN products p ON p.product_id = f.product_id
GROUP BY facet, facet_value;
facet不必是 VARCHAR。它可以是一个简单的 INTEGER,因为您的应用程序知道它的含义。