2011-06-07 41 views
0

情况:挣扎正确连接多个表得到正确的数据

我的MySQL 5,我想制作公司和一些利润细节的报告。

  • 每个公司都有我们为他们做的工作。
  • 每一个工作都有参与该工作的工作件。
  • 每件作品都有一个任务类型

我要找回什么:

  • 我想知道每家公司从所有工作
  • 总费用占利润总额每家公司从所有工作
  • 花费在所有的工作对每家公司的总时间量 - 由工作型分离

公司表:

  • ID

工作表:

  • ID
  • COMPANY_ID
  • 预算
  • 成本

工作表:

  • ID
  • JOB_ID
  • TYPE_ID
  • START_TIME
  • END_TIME

类型表:

  • ID
  • hourly_rate

关系:

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

谢谢!

回答

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; 
+0

谢谢,不能要求更多了! – 472084 2011-06-07 12:03:46

+0

刚刚意识到第二个工作正常,但第一个产生的total_costs值都太高了!有任何想法吗? – 472084 2011-06-07 14:19:49