я следующий MySQL таблицы базы данных, разработанная,SQL операция SUM нескольких подзапросов
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, но по стоимости услуг, она суммирует и возвращает только общую стоимость обслуживания первого пассажира.
Я думаю, что мне нужно еще несколько гнездящихся запросов, нужна помощь и, если возможно, пожалуйста, как я могу получить результат в виде итогового суммирования как общей стоимости проезда, так и стоимости обслуживания.
OK вот 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.
Спасибо! :)
Как вы проводите различие между услугами, которые были проданы одному и тому же пассажиру в разных билетах? Похоже, что 'ticket_id' отсутствует в таблице' service' ... – peterm
Peterm здесь используется служебная таблица, для хранения предмета обслуживания, купленного пассажиром, и связана с пассажирским столом с помощью ограничения доступа для пассажира-пассажира. –