Probleem
Aan een product hangen meerdere productopties met als voorbeeld:
waarbij Kleur als voorbeeld wordt gegeven aangezien deze kan verschillen in meerdere talen (dit heb ik weggelaten). Nu wil ik echter filters gaan opzetten, hierbij is het de bedoeling dat de klant het volgende kan:
en vervolgens worden de producten hierop gesorteerd. De boxes zelf vullen lukt wel, echter de producten ophalen waarbij meer dan 1 veld is gegeven (dus en Cores word op gefilterd en kleur) tast ik in het duister hoe dit op te lossen
Tabellen
Resultaat
Ik krijg al netjes een array met:
filter[productfield_id] = productpropertyname
dus:
filter[1] = 3000mhz
filter[2] = Barcelona
Nu wil ik dus dat hij met product ID 1 en 2 komt, (3 = 4000mhz processor, dus moet niet worden weergegeven).
Tip
Je hoeft eigenlijk alleen met de tabel productproperties te werken, ik hoef alleen de product_id's terug te krijgen, de rest join ik er wel aan vast.
Iemand die mij in 1 query dit kan laten oplossen
Aan een product hangen meerdere productopties met als voorbeeld:
code:
1
2
3
4
5
6
7
8
9
| Naam product: AMD 3000+ +----------------------------------------------+ |Productfield_name |string_text | +-----------------------+----------------------+ |Snelheid |3000mhz | |Family |Barcelona | |Cores |1 | |Kleur |Zwart | +----------------------------------------------+ |
waarbij Kleur als voorbeeld wordt gegeven aangezien deze kan verschillen in meerdere talen (dit heb ik weggelaten). Nu wil ik echter filters gaan opzetten, hierbij is het de bedoeling dat de klant het volgende kan:
code:
1
2
| Cores: [ 1 | V ] Kleur: [ Zwart | V ] |
en vervolgens worden de producten hierop gesorteerd. De boxes zelf vullen lukt wel, echter de producten ophalen waarbij meer dan 1 veld is gegeven (dus en Cores word op gefilterd en kleur) tast ik in het duister hoe dit op te lossen
Tabellen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| Tabel: products +--------------------------+ |product_id |product_name | +-----------+--------------+ |1 |AMD 3000+ | |2 |AMD x2 3000+ | |3 |AMD x2 4000+ | +--------------------------+ Tabel: productfield_name +----------------------------------------------+ |Productfield_id |productfield_name | +-----------------------+----------------------+ |1 |Snelheid | |2 |Family | |3 |Cores | |4 |Kleur | +----------------------------------------------+ Tabel: productproperties +------------------------------------------------------------------------+ |productproperty_id |product_id |productfield_id |productproperty_name | +-------------------+------------+----------------+----------------------+ |1 |1 |1 |3000mhz | |2 |1 |2 |Barcelona | |3 |1 |3 |1 | |4 |1 |4 |Zwart | |5 |2 |1 |3000mhz | |6 |2 |2 |Barcelona | |7 |2 |3 |2 | |8 |2 |4 |Zwart | |9 |3 |1 |4000mhz | |10 |3 |2 |Barcelona | |11 |3 |3 |2 | |12 |3 |4 |Zwart | +------------------------------------------------------------------------+ |
Resultaat
Ik krijg al netjes een array met:
filter[productfield_id] = productpropertyname
dus:
filter[1] = 3000mhz
filter[2] = Barcelona
Nu wil ik dus dat hij met product ID 1 en 2 komt, (3 = 4000mhz processor, dus moet niet worden weergegeven).
Tip
Je hoeft eigenlijk alleen met de tabel productproperties te werken, ik hoef alleen de product_id's terug te krijgen, de rest join ik er wel aan vast.
Iemand die mij in 1 query dit kan laten oplossen