2016-02-11 101 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查询编辑器)中,并且错误消息将更加清晰。