簡単なクエリで、各ライセンスタイプのライセンス数を一覧表示します。
クエリ:
SELECT
COUNT(licenses.licenseID) AS total
FROM
licenses
GROUP BY
licenses.licensetypeID
結果:
total
=====
389
14
2
5
3
1
1
ここで、ライセンスからの利益を合計したいと思います。テーブルtransactions
には、PayPalからのすべてのトランザクションが含まれています。私はmc_gross
要約するために使用します。払い戻しがある場合もあるので、mc_gross
マイナスであり、ライセンスよりも多くのトランザクションがあります。
私の現在のデータベースでは、トランザクションが払い戻されたため、4つのライセンスが削除されました。
私の試み:
SELECT
COUNT(licenses.licenseID) AS total,
SUM( transactions.mc_gross ) AS gross
FROM
licenses
LEFT JOIN transactions ON licenses.txn_id = transactions.txn_id
GROUP BY
licenses.licensetypeID
結果:
393 9020.00
14 NULL
2 NULL
5 NULL
3 100.00
1 NULL
1 NULL
最初のライセンスタイプには、最初のクエリよりも合計4つ多いことに注意してください。これから、トランザクションテーブルの余分な行をカウントアップしていると推測します。しかし、理由はわかりません。LEFT JOIN
左側のテーブルのすべての行を取得して、licenses
使用可能なものに接続すると思ったからですtransactions
。
さまざまな結合を読んでも、希望する結果を生成するためにそれらを理解することはできません。
間違った結合をしていますか?または、間違った値でグループ化しますか?
合計がゼロカウントであっても、すべてのライセンスタイプを一覧表示したいことに注意してください。
(テーブル構造全体が必要かどうかを教えてください。質問が長くなりすぎないようにスキップしました。関連するすべての情報が含まれていることを願っています。)