0
私は、注文データベースからデータを取り出すために使用しているSQLクエリを持っています。私は2つのテーブルを照会し、UNION ALLを使用して結果を結合しています。ただし、UNION ALLは期待どおりに機能していないようです。ここで私が使用していたクエリされます。MySQL UNIONが正しく動作しないようです。
+=======+========+=======+
| year | cnt | total |
+=======+========+=======+
| 2016 | 200 | 1000 |
| 2016 | 50 | 200 |
| 2015 | 100 | 800 |
| 2015 | 10 | 50 |
+=======+========+=======+
しかし、これは私が取得したいものです::
SELECT year(oc_order.date_added) AS year, COUNT(oc_order.order_id) as cnt, SUM(ifnull(oc_order.new_total,oc_order.total)) as total
FROM oc_order
WHERE oc_order.order_status_id IN (1,3,5)
AND MONTH(oc_order.date_added) BETWEEN '01' AND '02'
AND DAY(oc_order.date_added) BETWEEN '01' AND '31'
GROUP BY year(oc_order.date_added)
UNION ALL
SELECT ifnull(year(str_to_date(oc_return_custom.date_added,'%d-%m-%Y %H:%i:%s')),year(str_to_date(oc_return_custom.date_added,'%Y-%m-%d %H:%i:%s'))) AS year, COUNT(oc_return_custom.return_id) as cnt, SUM(oc_return_custom.total) as total
FROM oc_return_custom
WHERE ifnull(MONTH(str_to_date(oc_return_custom.date_added,'%d-%m-%Y %H:%i:%s')),MONTH(str_to_date(oc_return_custom.date_added,'%Y-%m-%d %H:%i:%s'))) BETWEEN '01' AND '02'
AND ifnull(DAY(str_to_date(oc_return_custom.date_added,'%d-%m-%Y %H:%i:%s')),DAY(str_to_date(oc_return_custom.date_added,'%Y-%m-%d %H:%i:%s'))) BETWEEN '01' AND '31'
GROUP BY ifnull(year(str_to_date(oc_return_custom.date_added,'%d-%m-%Y %H:%i:%s')),year(str_to_date(oc_return_custom.date_added,'%Y-%m-%d %H:%i:%s')))
ORDER BY year DESC
は、これは私がクエリから得るものです
+=======+========+=======+
| year | cnt | total |
+=======+========+=======+
| 2016 | 250 | 1200 |
| 2015 | 110 | 850 |
+=======+========+=======+
誰かが言うことができます私は何をやっているのですか?
メモ: oc_orderテーブルのdate_addedカラムはdatetimeですが、oc_return_customのdate_addedカラムはテキストのみです。
を私はUNIONのドキュメントに、おそらく3回準備ができて、私はちょうどこれを実現することができませんでした。私はサブクエリを使ってみましたが、何か間違っていたと思います! Ευχαριστώ!!! –