Beste Tweakers,
Voor één van mijn opdrachtgevers moet ik een applicatie bouwen die een soortgelijke functie heeft als de tweakers pricewatch (Echter wel voor andere producten). De bedoeling is om aan de hand van een aantal ranged sliders (waardes van 1 tot 10) producten te selecteren die binnen een bepaalde range vallen. Mijn (vereenvoudige tabellen zien er als volgt uit:
Product tabel:
Property tabel:
Value tabel:
In werkelijkheid betreffen dit ongeveer 30 eigenschappen. Ik probeer via een MySQL query alle properties te controleren of zij binnen de gezette range vallen. Uiteindelijk wil ik een lijst van producten hebben waarvan alle eigenschappen binnen de gestelde waardes vallen. Dit doe ik op dit moment met een RIGHT JOIN op dezelfde tabel voor elke property. Mijn query ziet er dan als volgt uit:
Uiteraard is bovenstaand nog prima te doen met 2 properties maar met 30 zorgt dit voor een totaal niet meer te benaderen database. Ik heb het gevoel dat ik het probleem compleet verkeerd benader maar kom ook niet via de bekende weg (Google) tot andere inzichten. Wellicht dat jullie mij wat op weg kunnen helpen? Misschien iemand van de pricewatch?
Voor één van mijn opdrachtgevers moet ik een applicatie bouwen die een soortgelijke functie heeft als de tweakers pricewatch (Echter wel voor andere producten). De bedoeling is om aan de hand van een aantal ranged sliders (waardes van 1 tot 10) producten te selecteren die binnen een bepaalde range vallen. Mijn (vereenvoudige tabellen zien er als volgt uit:
Product tabel:
productid | name |
1 | product x |
2 | product y |
Property tabel:
propertyid | title |
1 | property x |
2 | property y |
Value tabel:
valueid | propertyid | productid | value |
1 | 1 | 1 | 7 |
2 | 2 | 1 | 8 |
3 | 1 | 2 | 4 |
4 | 2 | 2 | 3 |
In werkelijkheid betreffen dit ongeveer 30 eigenschappen. Ik probeer via een MySQL query alle properties te controleren of zij binnen de gezette range vallen. Uiteindelijk wil ik een lijst van producten hebben waarvan alle eigenschappen binnen de gestelde waardes vallen. Dit doe ik op dit moment met een RIGHT JOIN op dezelfde tabel voor elke property. Mijn query ziet er dan als volgt uit:
code:
1
2
3
| SELECT p.productid FROM product AS p RIGHT JOIN value AS v1 ON p.productid = v1.productid AND v1.propertyid = 1 AND v1.value >= 5 AND v1.value <= 10 RIGHT JOIN value AS v2 ON p.productid = v2.productid AND v2.propertyid = 2 AND v2.value >= 3 AND v2.value <= 10 |
Uiteraard is bovenstaand nog prima te doen met 2 properties maar met 30 zorgt dit voor een totaal niet meer te benaderen database. Ik heb het gevoel dat ik het probleem compleet verkeerd benader maar kom ook niet via de bekende weg (Google) tot andere inzichten. Wellicht dat jullie mij wat op weg kunnen helpen? Misschien iemand van de pricewatch?
[ Voor 10% gewijzigd door juggle op 09-04-2010 03:53 ]
Zoek je mede papa's om gezellig mee te gamen? kijk op: fathersoftweakers.nl