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

How to use sum, join, order by and where clause in mysql?

所以我有如下两个表格:

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

我想根据 idCust 并且仅从特定的 idUser 获得来自 tb_cust 的收入。我试过这个:

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."'

但是我得到了错误,据说

"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE idUser='azkyath'' at line 1 "

请有人帮助我,我已经做了 2 天了,但仍然找不到合适的。

你应该这样写查询:

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.
  • 之前
  • 使用 table 别名,即 table 名称的缩写。
  • 限定所有列名(即使用 table 别名)。
  • ? 用于 table,其中 idUser 来自。
  • :AccMgrID 用于 参数 。如果您要通过编程语言有效地使用 SQL,您应该学习如何使用参数。

希望对您有所帮助:

使用 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