2014-03-06 40 views
0

请问有人能告诉我的sql请求有什么问题吗?数据库错误1064

这是一个结果:

数据库错误:无效的SQL:

SELECT 
    COUNT(DISTINCT i.item_id) 
FROM 
    (
    (
     va_items i 
     INNER JOIN va_items_categories ic 
     ON i.item_id = ic.item_id 
    ) 
    INNER JOIN va_categories c 
     ON c.category_id = ic.category_id 
) 
WHERE i.is_showing = 1 
    AND i.is_approved = 1 
    AND (
    (
     i.hide_out_of_stock = 1 
     AND i.stock_level > 0 
    ) 
    OR i.hide_out_of_stock = 0 
    OR i.hide_out_of_stock IS NULL 
) 
    AND (
    i.language_code IS NULL 
    OR i.language_code = '' 
    OR i.language_code = 'en' 
) 
    AND i.sites_all = 1 
    AND i.guest_access_level & 2 
    AND (
    ic.category_id = 53 
    OR c.category_path LIKE '0,48,53,%' 
) (i.price > 0 
    AND i.is_sold = 0) 

这是错误:

MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(i.price > 0 AND i.is_sold = 0)' at line 1

一个不能老是写完整的请求,因为有巨大的脚本,用很多逻辑形成这个请求。

帮助我,请

回答

2

你缺少运营商和/或(i.price > 0 AND i.is_sold = 0)前尝试

AND (i.price > 0  AND i.is_sold = 0) 

OR (i.price > 0  AND i.is_sold = 0) 
+1

是的,它有帮助!谢谢) – volodymyr3131

0
(ic.category_id = 53 OR c.category_path LIKE '0,48,53,%') (i.price > 0 AND i.is_sold = 0) 

这不是有效的SQL。您需要在近距和开放式括号之间插入一些东西,可能是一个AND。