我正在为一家汽车修理厂设计一个数据库.每种车型都有特定服务的特定成本.一、 丰田凯美瑞-换油-250美元,丰田卡罗拉-换油-300美元.
一项服务可以使用多个备件.我正在try 编写一个查询,向客户开具账单.当一个服务只使用一个部件时,查询工作正常.但是,当使用多个部件时,服务成本将与部件成本一起多次收取.理想情况下,任何重复服务(包含不同部分)的成本应为0美元,以便我可以正确地向客户开具发票.
以下是我的SQL代码:
SELECT s.name AS 'Service',
cost AS `Cost of Service`,
p.name AS `Part Used`,
quantity AS `Quantity`,
price_sold AS 'Cost of Part',
(SELECT Quantity * `Cost of Part` + `Cost of Service`) AS `Total Bill`
FROM work_order
JOIN client ON client.client_ID = work_order.client_ID
JOIN vehicle v ON v.vehicle_ID = work_order.vehicle_ID
JOIN model m ON m.model_ID = v.model_ID
JOIN completed_work_order cwo ON work_order.work_order_ID = cwo.work_order_ID
JOIN service s ON s.service_ID = cwo.service_ID
JOIN model_services ms ON m.model_ID = ms.model_ID AND s.service_ID = ms.service_ID
JOIN used_parts up ON cwo.completed_work_order_ID = up.completed_work_order_ID
JOIN part p ON p.part_ID = up.part_ID
WHERE client.client_ID = 6;
正如您所看到的,服务"动力转向判断"出现了两次,这很有意义,但服务成本也再次出现,因此客户的账单不正确.
奖励:如果有一种方法可以在末尾添加一个自定义行,即"总账单"列的总和,那将是惊人的.(但这是第二优先事项).