我正在尝试运行包含三个表的 SQL 语句。
收入
-id
-title
-amount
-company_id
公司
-id
-name
-sector_id
部门
-id
-name
如您所见,“收入”表与“部门”表没有直接关系。我想做的是按行业部门获取总收入。
到目前为止,我已经成功计算了两个表格,但对于三个表格的知识有限。请指导我。
这适用于两个表。按公司划分的收入
$x=0;
foreach($companies as $Company){
$companyName= $Company['Company']['name'];
$companyId= $Company['Company']['id'];
$query= $this->Income->query("
SELECT SUM( amount ) AS IncomeTotal
FROM incomes
WHERE company_id=$companyId
");
$total=$query[0][0]['IncomeTotal'];
if($total!=null){
//$incomeByCompany[$companyName]=$total;
//$incomeByCompany['total']=$total;
$incomeByCompany[$x]['companyId']=$companyId;
$incomeByCompany[$x]['name']=$companyName;
$incomeByCompany[$x]['total']=$total;
}
$x++;
}
最佳答案
SELECT s.name , SUM(i.amount) as total_sector
FROM sectors s
JOIN companies c
ON s.id = c.sector_id
JOIN incomes i
ON c.id = i.company_id
GROUP BY s.name
此外,您的公司查询应该是:
,而不是循环SELECT c.name , SUM(i.amount) as total_sector
FROM companies c
ON s.id = c.sector_id
JOIN incomes i
ON c.id = i.company_id
GROUP BY c.name
关于php - 通过部门的总额(包括公司),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46920570/