3つのテーブルから2つの合計を取得したい:
tbl_header
id id_quotation description
1 1 descr_1
2 2 descr_2
tbl_body
id id_quotation id_item item_cost
1 1 1 400
2 1 2 300
tbl_money
id id_quotation amount
1 1 200
2 1 300
3 2 100
したがって、tbl_head SUM(tbl_body.item_cost) WHERE tbl_body.id_quotation = 1
(この場合は400 + 300 = 700)およびSUM(tbl_money.amount) WHERE id_quotation=1
(この場合は200 + 300 = 500)から説明を取得するには、1つのクエリが必要です。Id_quotation
すべてのテーブルで同じフィールドです。
私はこのクエリでそれを行いました:
select head.description,
sum(body.item_cost) as sum_1,
(select sum(money.amount)
from tbl_money money
where money.idquotation=head.idquotation
GROUP BY money.id_quotation) as sum_2
FROM tbl_body as body,
tbl_header as head
WHERE head.id_quotation=body.id_quotation
GROUP BY head.description
ここで、内部クエリを削除して次のselect sum(money.amount) from ...
ようなものに置き換えたいのですSUM(money.amount)
が、常にレコードを3回取得するため、合計は3倍になります。動作しないクエリは次のとおりです。
SELECT head.description,
Sum(body.item_cost) AS sum_1,
sum(money.amount) as sum_2
FROM (tbl_header head
INNER JOIN tbl_body body
ON head.id_quotation=body.id_quotation)
INNER JOIN tbl_money money
ON head.id_quotation=money.id_quotation
WHERE head.id_person=1
AND money.id_quotation=body.id_quotation
GROUP BY head.description;
ありがとう。