2013-12-18 45 views
1

你好,這是我的表有多個表的表MySQL查詢問題加入

表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

這是更好,如果你使用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 
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 
+0

對不起我qyestion是錯誤的。我需要pav.option_value ='7'或pao.option_value ='7' – Prakash

+0

@Prakash檢查更新後的答案 –

+0

如果我的查詢是SELECT p。* FROM products p INNER JOIN product_attibute_value pav ON p.id = pav.product WHERE p.active = 1 AND(pav.option_value ='orange') GROUP BY p.id ORDER BY p.price ASC,它會顯示正確的結果,當我加入選項表時它的未來 – Prakash