3

次を使用して、codeigniter で次のクエリを使用しています。

$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)
');

calc の近くで SQL 構文をチェックするとエラーが発生します。問題の場所と理由を説明してください。ps: 次のような order by 句で calc を使用したかっただけです。

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

更新:これは、このクエリの実行中に得られるものです:

Error Number: 1064

SQL 構文にエラーがあります。productsnear 'as calc) FROM ( ) JOIN categoriesONを使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してくださいcategoriesid= products.`ca' at line 1

4

2 に答える 2

1

エイリアスを使用する場合は、CodeIgnioter が列名の周りに自動的に目盛りを追加しないようにする必要があります。この動作をオフselect()にするには、 の 2 番目のパラメーターを設定するだけです。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)  ;
于 2012-11-28T02:05:27.347 に答える
0

はい、あなたは正しいです@John

$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)  ;

私のためにも働いた

于 2014-09-09T11:02:39.767 に答える