所以我有两个表格,如下所示:
- tb_custmap:idCust,idUser
- 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 天,但仍然无法找到合适的。
希望这会对您有所帮助:
使用 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
你应该像这样编写查询:
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,您应该学习如何使用参数。