2017-03-01 7 views
0

私は複数の列を実行するために、条件付きクエリの下に持っているがここでMySQLの複数列の検索リターン間違った結果

SELECT 
    prod.pid, 
    prod.pname, 
    prod.description, 
    prod.status, 
    foto.set_cover, 
    foto.filename 
FROM products prod 
INNER JOIN second_child_categories secd ON prod.category_id = secd.second_id 
INNER JOIN photos foto ON prod.pid = foto.pid 
WHERE CONCAT(prod.pname, prod.description) LIKE '%home%' 
OR CONCAT(prod.description, prod.pname) LIKE '%home%' 
AND foto.set_cover = '1' 
AND prod.status = '1' 
ORDER BY prod.created_date DESC 

を検索し、出力だ

foto.set_cover='1' AND prod.status='1' 

結果がconditと一致しませんイオン。

このクエリはどのように修正できますか?

ありがとうございました。

答えて

0

Mysql or/and precedence?

ORは(暗黙的に)あなたが書いたもの高い優先順位を持っている参照してください。私はあなたが

( 
    CONCAT(prod.pname, prod.description) LIKE '%home%' 
    OR 
    CONCAT(prod.description, prod.pname) LIKE '%home%' 
) 
AND foto.set_cover = '1' 
AND prod.status = '1' 
を意味したものだと思うものを

CONCAT(prod.pname, prod.description) LIKE '%home%' 
OR (
    CONCAT(prod.description, prod.pname) LIKE '%home%' 
    AND foto.set_cover = '1' 
    AND prod.status = '1' 
)