Join na tabulku s parametry
- koprkuba
- Člen | 24
Ahoj,
mám následující strukturu databáze:
products
+-------------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
+-------------+--------------------------+------+-----+---------+----------------+
param_values
+-------------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| value | int(16) unsigned | NO | MUL | NULL | |
+-------------+--------------------------+------+-----+---------+----------------+
product_params
+-----------------+---------------- -------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| product_id | int(11) | NO | | NULL | |
| param_name | ENUM | NO | MUL | NULL | |
| param_values_id | int(11) | NO | | NULL | |
+-----------------+------------------------------+------+-----+---------+----------------+
Potřeboval bych sestavit dotaz, který bude filtrovat produkty podle
parametrů (tabulky product_params).
Řekněmě, že parametry jsou „color, size, handmade, … “
a já chci najít všechny produkty které mají velikost „Medium“ a zároveň mají „Černou“ barvu + případně další parametry. Tj. chci vytvářet subsety na základě parametrů. (klasický filtr)
Přes normální SQL Join to nechci dělat, jelikož je parametrů opravdu hodně a mám pocit, že bych pro každý musel dělat další jeden join.
Máte někdo nějaký nápad jak se nad touto strukturou dotazovat?
Problém join tabulek je také v tom, že dat je opravdu hodně, řádově
desítky tisích záznamů a JOIN trvá věčnost.
Se strukturou databáze nic neudělám, přistupuje k ní ještě jiné API a
to by se muselo předělávat také.
Editoval koprkuba (12. 12. 2014 9:38)