【发布时间】:2014-08-03 18:45:55
【问题描述】:
鉴于这些表格的定义和关系:
jobs
tasks
invoice_item
invoice_payment
工作是一切的根源。
每个工作都有多个任务,例如,工作可能是建造一把椅子,而任务可能是所需的步骤。每个任务都有一定的计划价格,所以购买椅子的木头可以花费 400。
每个任务都可以通过发票开具账单,发票存储在两个表中,一个表保存 invoice_id(invoice_item) 而另一个保存发票付款详细信息,例如要开票的金额和要开票的任务。
每个任务可以有多个发票,例如,我们的任务花费 400 可以有 4 张发票,每张 100。
要求:
使用以下信息在其自己的行中显示每个作业:
1. 工作计划价格总和
2. 已为该工作计费的总和
3. 职位描述
我创建了这个 sqlfiddle 来提供基本的数据结构。 http://sqlfiddle.com/#!2/0be74 该数据集的预期结果是:
(job_description, SUM(planned), SUM(billed))
VALUES
('Project A', 2000, 1900),
('Project B', 3000, 2000)
我目前唯一且唯一的解决方案严重失败:
Select j.job_description, SUM(t.task_planned_price),SUM(p.invoice_amount)
FROM jobs as j
LEFT JOIN tasks as t ON t.job_id = j.job_id
JOIN invoice_item as i ON i.task_id = t.task_id
JOIN invoice_payment as p ON p.invoice_id = i.invoice_id
GROUP BY j.job_id
我将非常感谢任何关于我做错了什么的指导和一些提示(或答案)。 您可以将我的解决方案直接复制到 sqlfiddle 中,看看有什么问题。
提前致谢,很抱歉这个问题太长了!
【问题讨论】: