2017-05-28 57 views
0

動態賦值類型,其中查詢不起作用,顯示錯誤「數據庫錯誤」未知列'where子句'中的列'avgRateVal'。什麼是做最好的,任何建議代碼查詢中的動態賦值類型過濾器

$this->db->select('round(avg(ratevalue),1) as avgRateVal'); 
if($minRating!=0) 
    $this->db->where('avgRateVal >=', 1); 

if($maxRating!=0) 
    $this->db->where('avgRateVal <=', 5); 
+0

得到了SQL解決方案https://stackoverflow.com/questions/25160875/filter-rows-based-on-column-values-in-mysql-query但如何在codeigniter中實現,請任何想法 – santanu

回答

1

您只能使用在GROUP BY,ORDER BY或HAVING子句列別名。

寫您的查詢是這樣的:

$this->db->select('round(avg(ratevalue),1) as avgRateVal'); 
if($minRating!=0) 
    $this->db->having('avgRateVal >=', 1); 

if($maxRating!=0) 
    $this->db->having('avgRateVal <=', 5); 
$this->db->get('Table_Name'); 
$this->db->result_array(); 
+0

它的工作。感謝您的幫助 – santanu

+0

閱讀此https://www.codeigniter.com/userguide2/database/active_record.html您可以更好地瞭解codeigniter活動記錄@santanu – Nidhi

+0

感謝您的幫助@Nidhi – santanu

0

$這個 - > DB->選擇( '圓(AVG(ratevalue),1)avgRateVal');

如果($ minRating!= 0)

$this->db->where('round(avg(ratevalue),1) >=', 1); 

如果($ maxRating!= 0)

$this->db->where('round(avg(ratevalue),1) <=', 5); 
+0

已經嘗試過,它不工作,因爲它顯示數據庫錯誤 - 無效使用組功能 – santanu