0

所以我有两个表格,如下所示:

  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 天,但仍然找不到合适的。

4

2 回答 2

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

于 2018-06-28T02:51:43.930 回答
-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;

笔记:

  • WHERE之后FROM和之前ORDER BY
  • 使用作为表名缩写的表别名。
  • 限定所有列名(即,使用表别名)。
  • ?idUser从哪里来的表。
  • :AccMgrID是一个参数。如果要从编程语言中有效地使用 SQL,则应该学习如何使用参数。
于 2018-06-28T02:51:34.363 回答