如何在mysql中使用sum,join,order by和where子句?

时间:2018-06-28 02:31:31

标签: mysql sql codeigniter codeigniter-3 codeigniter-query-builder

所以我有两个如下表:

  1. tb_custmap:idCust,idUser
  2. tb_cust:idCust,收入

我想基于idCust从tb_cust中获得收入,而仅从特定的idUser中获得收入。我已经尝试过了:

SELECT tb_cust.revenue
FROM tb_custmap INNER JOIN
     tb_cust
     ON tb_custmap.idCust = tb_cust.idCust
ORDER BY tb_cust.revenue
WHERE idUser='".$AccMgrID."'

但是我得到了错误,据说

  

“您的SQL语法有误;请查看   对应于您的MariaDB服务器版本,以使用正确的语法   在第1行“

上的'WHERE idUser ='azkyath'附近

请有人帮助我完成2天,但仍然找不到合适的人。

2 个答案:

答案 0 :(得分:0)

希望这对您有帮助:

使用CI查询构建器来做到这一点

/*if you want to use `sum` use this instead of select
 $this->db->select_sum('tb_cust.revenue');
*/
$this->db->select('tb_cust.revenue');
$this->db->from('tb_custmap');
$this->db->join('tb_cust' , 'tb_cust.idCust = tb_custmap.idCust');

/*In where clause replace `table` name also with the correct table name 
 from where `idUser` column belongs to
*/
$this->db->where('table.idUser', $AccMgrID);

$this->db->order_by('tb_cust.revenue','ASC');
$query = $this->db->get();
if ( $query->num_rows() > 0 )
{
    print_r($query->result());
}

更多信息:https://www.codeigniter.com/user_guide/database/query_builder.html#selecting-data

答案 1 :(得分:-1)

您应该这样编写查询:

SELECT c.revenue
FROM tb_custmap cm INNER JOIN
     tb_cust c
     ON cm.idCust = c.idCust
WHERE ?.idUser = :AccMgrID
ORDER BY c.revenue;

注意:

  • WHEREFROM之后并在ORDER BY之前。
  • 使用表别名的缩写。
  • 限定所有列名称(即使用表别名)。
  • ?用于idUser所在的表格。
  • :AccMgrID用于参数。如果要通过编程语言有效使用SQL,则应该学习如何使用参数。