2016-02-11 139 views
0

這裏是我試過的sql查詢。SQL SELECT語句中的算術操作

function getall() { 
    $connection = new Connection; 
    $connection->open(); 
    $query = "SELECT position.id,position.name_position,position.g_position,position.cs,position.totalbefore, 
      COUNT(position2.staff_id) AS cnt_staff, 
      totalbefore-cnt_staff AS totalafter 
      FROM position 
      INNER JOIN position2 ON position.id = position2.id_position2 
      WHERE position.status_data= '1' 
      GROUP BY position2.id_position2"; 
    $result = mysql_query($query); 
    return $result; 
} 

此代碼返回語法錯誤。 IDK放在哪裏算術運算(totalbefore-cnt_staff AS totalafter)在statement.can有人幫我請

+0

檢查您的列名稱,如「totalbefore-cnt_staff」。這可能是totalbefore_cnt_staff –

回答

1

使用

position.totalbefore - COUNT(position2.staff_id) AS totalafter 

你需要計算值再次

+0

謝謝!它的工作 – puyen

0

既然你有在查詢中使用group by子句時,必須使用帶有算術表達式的聚合函數,如

sum(totalbefore-cnt_staff) as totalafter 

與totalbefore列相同。

無論如何,嘗試將查詢放在任何查詢編輯器(例如SQL查詢編輯器)中,並且錯誤消息將更加清晰。