トランザクションとカテゴリのそれぞれに次の表があります。 私は以下のクエリテーブルに結果を表示するクエリを作成しようとしています。以下のように0合計 -MySQL - 合計表2すべてを示す列の値表1の説明
私は、これは、しかし、私が私のカテゴリーBがゼロで示されたいカテゴリーBを与えていないされ、次の
SELECT IFNULL(categories.Name,'Total') AS category,
IFNULL(SUM(transactions.Amount),0) AS amount,
categories.Color
FROM transactions,categories
WHERE categories.CatID = transactions.CatID
GROUP BY categories.Name WITH ROLLUP
を試してみました。 ..
取引
+-----------+----------------+------------+
| Category | Amount | Color |
+-----------+----------------+------------+
| A | 70 | Green |
| B | 40 | Blue |
| Total | 110 | Blue |
+-----------+----------------+------------+
#
必要な結果
その結果を以下のGETTING+-----------+------------+------------+--------+
| TransID | SaleDate | CatID | Amount |
+-----------+------------+------------+--------+
| 1 | 2012-02-10 | 1 | 10 |
| 2 | 2012-02-10 | 3 | 10 |
| 3 | 2012-02-10 | 3 | 20 |
| 4 | 2012-02-10 | 1 | 25 |
| 5 | 2012-02-10 | 1 | 35 |
| 6 | 2012-02-10 | 3 | 5 |
| 7 | 2012-02-10 | 3 | 5 |
+-----------+------------+------------+--------+
カテゴリー
+------------+------+----------+
| CatID | Name | Color |
+------------+------+----------+
| 1 | A | Green |
| 2 | B | Red |
| 3 | C | Blue |
+------------+------+----------+
を助けてくださいあなたはrollup
とleft join
を探している
+-----------+----------------+------------+
| Category | Amount | Color |
+-----------+----------------+------------+
| A | 70 | Green |
| B | 0 | Red |
| C | 40 | Blue |
| Total | 110 | Pink |
+-----------+----------------+------------+
[この記事](https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/)がベンを使用しています上で使用しているANSI 89標準の代わりにANSI 92標準を使用して結合の種類をかなり効果的に説明するための図です。両方のデータセットにないレコードを保持するには、外部結合が必要です。 – xQbert