Query met meerdere where-s
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
product_id,feature,value
------------------------
10,10,10
10,11,11
11,11,11
12,10,10
12,11,11
12,12,12
------------------------
10,10,10
10,11,11
11,11,11
12,10,10
12,11,11
12,12,12
Daarbij de volgende query:
Code (php)
1
2
3
4
5
2
3
4
5
SELECT product_id
FROM tb_spec_fk
WHERE
(feature=10 AND value IN(10))
AND (feature=11 AND value IN(11))
FROM tb_spec_fk
WHERE
(feature=10 AND value IN(10))
AND (feature=11 AND value IN(11))
Waarbij ik als resultaat verwacht: 10 en 12. Helaas krijg ik hiermee geen resultaten terug.
Wie o wie? :)
feature = 10 AND feature = 11
Dat kan natuurlijk niet. feature is 10 OF 11.
Dus:
(feature=10 AND value IN(10))
OR (feature=11 AND value IN(11))
Ik dacht aan onderstaande query alleen als de tabel veel data bevat dan is deze niet goed voor je performance.
SELECT product_id
FROM tb_spec_fk
WHERE
product_id IN (SELECT product_ID from tb_spec_fk WHERE feature=10 AND value IN(10))
AND product_id IN (SELECT product_ID from tb_spec_fk WHERE feature=11 AND value IN(11))
GROUP BY product_id
Omdat er in meerdere rows gezocht moet worden dient de product_id ook gegroepeerd te worden anders krijg je 10,10,12,12,12.
Gewijzigd op 15/12/2012 17:36:44 door Rory S
Het gaat inderdaad om een grote hoeveelheid data. Dubbele items met distinct eruit halen misschien nog een idee? Heb zelf nog geen oplossing gevonden hoe ik dat eventueel toepas in deze situatie.
Leg dan eens in woorden uit wat je nu precies wilt hebben.
Wat Rory aangeeft en wanneer mogelijk sneller.
11, 11 ,11
11, 11, 11
Of heb je een gecombineerde sleutel?
@Rory: nee dat komt niet voor.
Toevoeging op 16/12/2012 14:14:27:
@Erwin: Hartelijk dank! Het werkt perfect! :)