具有多个表表连接的Mysql查询问题

时间:2013-12-18 10:38:51

标签: mysql sql select join where-clause

嗨,这是我的桌子

表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表。

它没有准确到来。我在这个查询中做错了什么?提前致谢

2 个答案:

答案 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