私は次の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 として旅客運賃の合計を取得しますが、サービス費用については、最初の乗客の総サービス費用のみを合計して返します。
クエリをさらにネストする必要があると思います。助けが必要です。可能であれば、乗客運賃とサービス費用の合計の合計として結果を取得する方法を教えてください。
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 として返す必要があります。
ありがとう!:)