我设计了以下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。
谢谢!:)