嗨,这是我的桌子
表1 =>产品
id product price active
3 sample 1500 1
4 sample2 2300 2
表2 => product_attibute_value
id product option_value
1 3 Green
2 3 Red
和表3 => product_attribute_options
id product option_value
1 2 8
2 2 7
我的查询是
SELECT typ.*
FROM products typ , attibute_value tyav
WHERE typ.active='1' AND ( tyav.option_value = 'Green' ) AND typ.id=tyav.product
GROUP BY typ.id
ORDER BY typ.price ASC
这工作正常。现在我想添加product_attribute_options表。
现在我添加了这样的新查询
SELECT typ.*
FROM products typ , attibute_value tyav, product_attibute_options tyop
WHERE typ.active='1' AND ( tyav.option_value = '7' OR tyav.option_value = 'Orange' ) OR
( tyav.option_value = '7' OR tyav.option_value = 'Orange' ) AND
typ.id=tyav.product OR typ.id=tyop.product
GROUP BY typ.id
ORDER BY typ.price ASC
我在一个页面中显示选项值,如果我选择此选项,如8或橙色,它将显示该产品。此产品应来自attribute_options表和attribute_value表。
它没有准确到来。我在这个查询中做错了什么?提前致谢
答案 0 :(得分:1)
试试这个:
SELECT p.*
FROM products p
INNER JOIN product_attibute_value pav ON p.id = pav.product
INNER JOIN product_attibute_options pao ON p.id = pao.product
WHERE p.active = 1 AND ( pav.option_value = '7' OR pao.option_value = '7' )
GROUP BY p.id
ORDER BY p.price ASC
答案 1 :(得分:0)
最好在每个句子上使用JOIN
个句子和条件。
试试这个:
SELECT typ.*
FROM products typ
JOIN attibute_value tyav ON typ.id=tyav.product
JOIN product_attibute_options tyop ON typ.id=tyop.product
WHERE typ.active='1'
AND ( tyav.option_value = '7' OR tyav.option_value = 'Orange' )
GROUP BY typ.id
ORDER BY typ.price asc