2012-11-28 102 views
3

在笨我使用下面的查询使用:用笨(活动记录)MySQL查询

$this->db->select('products.id, 
        categories.name as cat_name, 
        products.name as name, 
        products.product_image, 
        products.description, 
        products.price, 
        products.furl, 
        products.on_sale, 
        products.quantity_in_stock, 
        products.product_code, 
        products.rating_1, 
        products.rating_2, 
        products.rating_3, 
        products.rating_4, 
        products.rating_5, 
        products.rated_by, 
        products.discount, 
        ((products.rating_1+products.rating_2, 
        products.rating_3, 
        products.rating_4, 
        products.rating_5)/rated_by as calc) 
'); 

我得到一个错误检查近钙的SQL语法。请解释问题出在哪里以及为什么。 PS:我只是想by子句这样使用计算的依次是:

$this->db->order_by('calc','desc'); 
$this->db->get(); 

UPDATE:这是我所得到的,而执行这个查询:

Error Number: 1064 

你在你的SQL语法错误;检查对应于您的MySQL服务器版本的手册,以在'as calc'附近使用正确的语法FROM(products)JOIN categories ON categories。第1行的'ca'

+0

岂不是'products.rating_1 + products.rating_2 + products.rating_3 + products.rating_4 + products.rating_5)/ rated_by as calc'。尝试print_r()查询,它应该为您提供已形成的SQL语句,便于调试。 – Jeemusu

+0

尝试'$ this-> db-> get('your_table_name');' –

回答

1

如果您打算使用别名,那么您不希望CodeIgnioter会自动在列名称周围添加刻度线,因为这会导致错误。只是select()第二放慢参数设置为false关闭此行为:

$this->db->SELECT( 
       'products.id,categories.name as cat_name, 
        products.name as name, 
        products.product_image, 
        products.description, 
        products.price, 
        products.furl, 
        products.on_sale, 
        products.quantity_in_stock, 
        products.product_code, 
        products.rating_1, 
        products.rating_2, 
        products.rating_3, 
        products.rating_4, 
        products.rating_5, 
        products.rated_by, 
        products.discount, 
        ((products.rating_1+products.rating_2, 
        products.rating_3,products.rating_4, 
        products.rating_5)/rated_by as calc)', false) ; 
+0

nopes not working ...出现此错误“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册('product')JOIN'categories' ON'categories'.'id' ='products'.'ca'at line 1“ – beNerd

0

是的,你是正确的@约翰

$this->db->select('products.id,categories.name as cat_name, products.name as name,products.product_image,products.description,products.price,products.furl,products.on_sale,products.quantity_in_stock,products.product_code,products.rating_1,products.rating_2,products.rating_3,products.rating_4,products.rating_5,products.rated_by,products.discount,((products.rating_1+products.rating_2,products.rating_3,products.rating_4,products.rating_5)/rated_by as calc)', false) ; 

也为我工作