16

日付と 2 つの値に基づいて合計する必要がある 2 つのテーブルがあります。

これにより、すべての情報のリストが表示されます。問題ありません。

$query = (SELECT  date, debit, credit , note  FROM proj3_cash )
UNION 
(SELECT  settle, purch, sale, issue FROM proj3_trades)
ORDER BY date";

次に、2 つのテーブルの日次合計の情報をグループ化する必要があります。

$query = "(SELECT  date, SUM(debit), SUM(credit)FROM proj3_cash  GROUP BY date)
UNION 
(SELECT  settle as date, SUM(purch) as debit, SUM(sale) as credit FROM proj3_trades GROUP BY date)
ORDER BY date";

結構ですが、各テーブルに同じ日付に何かがある場合は、次のようになります。

date        SUM(debit)    SUM(credit)
--------------------------------------
2010-12-02  0.00          170.02 
2010-12-02  296449.91     233111.10 

2 つを同じ日にグループ化するにはどうすればよいですか?

最後に GROUP BY を追加すると、エラーが発生するだけです。または、これは JOIN で行う必要がありますか?

4

1 に答える 1

20

派生テーブルを使用してこれを実現できます。

SELECT date, SUM(debit), SUM(credit)
FROM
(
    SELECT  date, debit, credit
      FROM proj3_cash
    UNION ALL
    SELECT  settle as date, 
            purch as debit, 
            sale as credit 
      FROM proj3_trades
) derivedTable
GROUP BY date
ORDER BY date

ユニオンは両方のテーブルで見つかった重複を排除するため、UNION を UNION ALL に変更しました。

于 2012-09-19T08:08:02.387 に答える