Mysql 努力正确连接多个表以接收正确的数据

Mysql 努力正确连接多个表以接收正确的数据,mysql,database,join,mysql5,Mysql,Database,Join,Mysql5,情况: 我有MySQL 5。我正试图制作一份公司报告和一些利润细节 每个公司都有我们为他们做的工作 每个工作都有与该工作相关的工作 每项工作都有一个任务类型 我要检索的内容: 我想知道每个公司所有工作的总利润 每个公司所有工作的总成本 每个公司在所有工作上花费的总时间-按工作类型分开 公司表: 身份证 名字 作业表: 身份证 公司id 预算 费用 工作台: 身份证 工作证 类型识别码 开始时间 结束时间 类型表: 身份证 名字 小时工资 关系: 公司--

情况:

我有MySQL 5。我正试图制作一份公司报告和一些利润细节

  • 每个公司都有我们为他们做的工作
  • 每个工作都有与该工作相关的工作
  • 每项工作都有一个任务类型
我要检索的内容:

  • 我想知道每个公司所有工作的总利润
  • 每个公司所有工作的总成本
  • 每个公司在所有工作上花费的总时间-按工作类型分开
公司表:

  • 身份证
  • 名字
作业表:

  • 身份证
  • 公司id
  • 预算
  • 费用
工作台:

  • 身份证
  • 工作证
  • 类型识别码
  • 开始时间
  • 结束时间
类型表:

  • 身份证
  • 名字
  • 小时工资
关系:

公司--<工作--<工作>--类型


谢谢

可以通过此查询找到前两个:

select
  c.name as company_name,
  sum(hour(end_time) - hour(start_time)) * hourly_rate - sum(costs) as total_profit,
  sum(costs) as total_costs
from companies c
join jobs j on j.company_id = c.id
join work w on w.job_id = j.id
join types t on t.id = w.type_id
group by 1;
select
  c.name as company_name,
  t.name as work_type,
  sum(hour(end_time) - hour(start_time)) as total_hours
from companies c
join jobs j on j.company_id = c.id
join work w on w.job_id = j.id
join types t on t.id = w.type_id
group by 1, 2;
最后一个可以通过此查询找到:

select
  c.name as company_name,
  sum(hour(end_time) - hour(start_time)) * hourly_rate - sum(costs) as total_profit,
  sum(costs) as total_costs
from companies c
join jobs j on j.company_id = c.id
join work w on w.job_id = j.id
join types t on t.id = w.type_id
group by 1;
select
  c.name as company_name,
  t.name as work_type,
  sum(hour(end_time) - hour(start_time)) as total_hours
from companies c
join jobs j on j.company_id = c.id
join work w on w.job_id = j.id
join types t on t.id = w.type_id
group by 1, 2;

谢谢,再多也不要了!刚刚意识到第二个很好,但第一个产生的总成本太高了!有什么想法吗?