我有一个设计好的MySQL数据库表,如下所示:
ticket(id, code, cust_name);
passenger(id, ticket_id, name, age, gender, fare);
service(id, passenger_id, item, cost);
一个车票可以有多个乘客,每个乘客可以购买多个服务。我想得到每张车票费用的总和。
我尝试了以下SQL:
SELECT
SUM(fare) as total_fare,
(SELECT SUM(cost) as total_cost FROM services WHERE passenger.id = services.passenger_id) as total_service_cost
FROM
ticket
JOIN passenger ON passenger.ticket_id = ticket.id
尽管结果将乘客票价总和作为total_fare,但对于服务费用,它仅累加并返回第一名乘客的总服务费用。
我认为我需要更多查询嵌套,需要帮助,如果可能的话,请告诉我如何得到总金额,将乘客票价和服务费用合计。
好的,这是SQL插入语句以澄清问题:
INSERT INTO `ticket` (`id`, `code`, `cust_name`) VALUES
(1, 'TK01', 'Dipendra Gurung');
INSERT INTO `passenger` (`id`, `ticket_id`, `name`, `age`, `gender`, `fare`) VALUES
(1, 1, 'John', '28', 'M', 120),
(2, 1, 'Kelly', '25', 'F', 120);
INSERT INTO `services` (`id`, `passenger_id`, `item`, `cost`) VALUES
(1, 1, 'S1', 30),
(2, 1, 'S2', 50),
(3, 2, 'S3', 50);
我想获取票务'TK01'的总费用(包括总票价和服务总费用)。SQL必须将总票价返回为120 + 120 = 240,将总服务费用返回为30 + 50 + 50 = 130。谢谢! :)
service
表中缺少ticket_id
... - peterm