これが MYSQL で可能であることを願っています。私は PHP でスクリプトを作成しています。
個々の条件とグループ化に基づいて、各月に基づいて値の SUM と COUNT に複数の列を作成しようとしています。テーブルは、accountid を介して既に結合されています。私は月次レポート(テーブル1)とプランター(テーブル2)の2つのテーブルを持っています。
望ましい結果は表1にあります
月次報告書(表1)
REPORTID|ACCOUNTID|COMPMONTH|SUMtoDATE|COUNTtoDATE|SUMcompDATE|COUNTcompDATE|
1 | 190 | JAN | 150 | 2 | 150 | 2 |
2 | 190 | FEB | 0 | 0 | 100 | 1 |
プランター(表2)
PlanterID | ACCOUNTID |PLANTER | SALARY | compDATE | toDATE |
1 | 190 | aaa | 100 | Jan-1-2013 | Jan-05-2013 |
2 | 190 | bbb | 50 | Jan-9-2013 | Jan-12-2013 |
3 | 190 | aaa | 100 | Feb-1-2013 | Mar-12-2013 |
4 | 190 | bbb | 0 | Mar-5-2013 | Mar-12-2013 |
内部結合を使用した単一のクエリは既に機能していますが、両方を実行すると、可能であればロジックを取得できないように見えるため、何も取得できません。
これは私がこれまでスタックオーバーフローから得たものですが、エラーが発生しています。誰かがそれをリファクタリングするか、機能させることができれば幸いです。
SELECT *,
(
SELECT COUNT(planters.todate), SUM(planters.todate)
FROM monthlyreport
INNER JOIN planters ON monthlyreport.accountid = planters.accountid
WHERE monthlyreport.accountid = 190 AND MONTH(monthlyreport.compmonth) = MONTH(planters.todate)
GROUP BY monthlyreport.mthreportid, month(planters.todate)
) AS count_1,
(
SELECT COUNT(planters.compdate), SUM(planters.compdate)
FROM monthlyreport
INNER JOIN planters ON monthlyreport.accountid = planters.accountid
WHERE monthlyreport.accountid = 190 AND MONTH(monthlyreport.compmonth) = MONTH(planters.compdate)
GROUP BY monthlyreport.mthreportid, month(planters.compdate)
) AS count_2