0

こんにちは、アクティビティとポイントの記録を含む以下の表があります

Activites
|A_ID   |Site        | ActivityValue| ActivityName
 ---------------------------------------------------
|1      | site1      | 7             | ActivityName1
|2      | site1      | 6             | ActivityName2
|2      | site1      | 6             | ActivityName3
|2      | site1      | 6             | ActivityName4  



pointsTable
|UserID |RemainderPoints  | Active         | ActivityName |
------------------------------------------------------
|1      | 10              | TRUE           | ActivityName1| 
|2      | 5               | TRUE           | ActivityName2| 
|2      | 5               | TRUE           | ActivityName3| 
|2      | 5               | TRUE           | ActivityName3|  

必要なのは、アクティビティからすべてのレコードを返すことです

SELECT  ActivityName FROM activity WHERE `Site`='Site1' 

戻り値

ActivityName1
ActivityName2
ActivityName3
ActivityName4    

次に、pointstable のユーザー ID に基づいてユーザー ポイントを合計する必要があります。

SELECT UserID, ActivityName, Active,  SUM( RemainderPoints) 
FROM pointstable
WHERE UserID =2
AND Active =  'TRUE'  GROUP BY ActivityName    

戻り値

|UserID |RemainderPoints   | Active         | ActivityName |
-------------------------------------------------------------
|2      | 5                | TRUE           | ActivityName2| 
|2      | 10               | TRUE           | ActivityName3|    

それはすべて個別に問題ありませんが、ユーザーのためにそれらをまとめる必要があります。

ActivityName1  = 0
ActivityName2  = 5
ActivityName3  =10
ActivityName4  = 0

ポインタはありますか?

4

2 に答える 2

0

SELECT a.ActivityName,SUM( p.RemainderPoints) FROM activity a left join pointstable p on a.ActivityName =p.ActivityName WHERE p.UserID =2 AND p.Active = 'TRUE' and a.site ='Site1' GROUP BY a.ActivityName

お役に立てれば!

于 2013-11-01T15:43:07.943 に答える