1

したがって、次のような mysql クエリがあります。

SELECT rewards.name, redemptions.points, redemptions.value
FROM rewards
INNER JOIN redemptions ON rewards.id = redemptions.reward_id;

問題は、次のようなテーブルを吐き出すことです。

-----------------------------
| Reward 1 |  500   |  30   |
-----------------------------
| Reward 1 |  500   |  30   |
-----------------------------
| Reward 1 |  500   |  30   |
-----------------------------
| Reward 2 |  100   |  10   |
-----------------------------
| Reward 2 |  100   |  10   |
-----------------------------
| Reward 3 |  250   |  20   |
-----------------------------

等々。理想的には、私が実際にやりたいことは、それぞれを一度だけリストし、特定の列を合計することです。たとえば、次のようになります。

-----------------------------
| Reward 1 |  500   |  90   |
-----------------------------
| Reward 2 |  100   |  20   |
-----------------------------
| Reward 3 |  250   |  20   |
-----------------------------

3 番目の列を合計していますが、最初の 2 列は 1 回だけリストしています。重複を無視することを知っているので、おそらくユニオンがそれを行うと思いましたが、ユニオンを使用している間も機能するとは思いません。

4

2 に答える 2

2

を使用SUMし、忘れずに追加してくださいGROUP BY:

SELECT rewards.name, redemptions.points, SUM(redemptions.value)
FROM rewards
INNER JOIN redemptions ON rewards.id = redemptions.reward_id
GROUP BY rewards.name;
于 2013-01-21T03:05:51.523 に答える
1
SELECT  a.name, b.points, SUM(b.value)
FROM    rewards a
        INNER JOIN redemptions b
            ON a.id = b.reward_id
GROUP   BY a.name, b.points
于 2013-01-21T03:08:11.483 に答える