2 つのテーブル間でフィールドを合計する方法を決定しようとしています。
表 1 では、略して gegevens と呼びます。たとえば、gegevenID、vertrekdatum、prijs のようになります。
表 2 では、これを料金と呼びます。たとえば、feID、gegevenID、amount となります
gegevens から年 (vertrekdatum) に基づいて prijs の値を取得して合計したいと思います。
私は LEFT JOIN を実行しようとしましたが、手数料のテーブルに同じ gegevenID の 2 つのレコードが存在するまで機能し、それから prijs が 2 倍になりました。
テーブルの例:
GEGEVENS
----------------------------------
gegevenID | vertrekdatum | prijs |
----------------------------------
| 1 | 2011-01-01 |1385.88|
| 2 | 2011-03-01 | 450.26|
| 3 | 2012-01-01 |2505.10|
----------------------------------
FEES
----------------------------
feeID | gegevenID | amount |
----------------------------
| 1 | 2 | 50.00|
| 2 | 2 | 126.00|
| 3 | 3 | 50.00|
----------------------------
私が望む結果は
TOTALS
--------------------------------------------
| year | SumOfPrijs | SumOfFees | Total |
--------------------------------------------
| 2011 | 1836.14 | 176.00 | 2012.14 |
| 2012 | 2505.10 | 50.00 | 2555.10 |
--------------------------------------------
このクエリでは、1 つの gegevenID に対して料金表に 2 つの行があったことを考慮すると、'prijs' が 2 倍になりました。
SELECT sum(prijs) as SumOfPrijs, sum(amount) as SumOfFees, sum(prijs)+sum(amount) AS
Total, year(vertrekdatum) as year
FROM tbl_vluchtgegevens vg
LEFT JOIN tbl_fees f
ON f.gegevenID = vg.gegevenID
WHERE vertrekdatum <=NOW()
GROUP by year(vertrekdatum)
どんな考えでも素晴らしいでしょう。