5

別のフィールド値に基づいてフィールド値を合計するのに問題があります。

またはにSUM(activities.points)基づいてactivities.activity_type、に入れる必要があります。used_pointsadded_pointsAS used_points/added_points

テーブルアクティビティ:

id | subscription_id  | activity_type | points
--------------------------------------------------
1  |         1        |  used_points  |   10
2  |         1        |  used_points  |   50 
3  |         1        | added_points  |   20 
4  |         1        | added_points  |   30
5  |         2        |  used_points  |   20
6  |         2        |  used_points  |   45
7  |         2        | added_points  |   45
8  |         2        | added_points  |   45

テーブルサブスクリプション:

id |     name    |  current_points
-------------------------------------
 1 |    card_1   |        700
 2 |    card_2   |        900

必要なもの:

  name   |  current_points  | used_points | added_points
-----------------------------------------------------------
 card_1  |         700      |     60      |     50
 card_2  |         900      |     65      |     90

私が試したこと:

SELECT
    subscriptions.name,
    subscriptions.current_points,
    IF(activities.activity_type="used_points", SUM(activities.points), null)
        AS used_points,
    IF(activities.activity_type="added_points", SUM(activities.points), null)
        AS added_points 
FROM activities
JOIN subscriptions
    ON activities.subscription.id = subscription.id
GROUP BY subscriptions.name

これは間違っています。

ありがとう

4

4 に答える 4

1

変更してみる

IF(activities.activity_type="used_points", null, SUM(activities.points))
    AS used_points,
IF(activities.activity_type="added_points", null, SUM(activities.points))
    AS added_points 

次へ

SUM(IF(activities.activity_type="used_points", activities.points, 0))
    AS used_points,
SUM(IF(activities.activity_type="added_points", activities.points, 0))
    AS added_points 

このようにして、列を確認し、ポイントまたは0を合計します

于 2013-08-13T15:39:52.930 に答える