2012-11-28 99 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) ; 

也爲我工作