2017-05-02 4 views
2

は、私はこのクエリ持ってWHEREを持つ2つのサブクエリ合計する方法:

SELECT *, 
COALESCE((
    SELECT SUM(sum_points) 
    FROM (
     SELECT SUM(user_points.points) AS sum_points FROM user_points 
     WHERE user_points.user_id = user.user_id 
     UNION ALL 
     SELECT SUM(used_points.points) AS sum_points FROM used_points 
     WHERE used_points.user_id = user.user_id 
    ) t 
), 0) AS total_points_credit 
FROM user 

をしかし、私はこのエラーを取得:

#1054 - Unknown column 'user.user_id' in 'where clause' 

をどのようにすることができます私は、ユーザーのWHERE条件でuser.user_id値サブクエリ?

ありがとうございます。

+0

は 'used_points'と' user' – sinsedrix

答えて

0

この方法を試してみてください:

SELECT *, 
     COALESCE((SELECT SUM(user_points.points) 
       FROM user_points 
       WHERE user_points.user_id = user.user_id), 0) 
     + 
     COALESCE((SELECT SUM(used_points.points) 
        FROM used_points 
        WHERE used_points.user_id = user.user_id), 0) AS total_points_credit 
FROM user 
+1

ありがとうございました...うまくいきました。時には、もっと簡単な方法を考えなければならないこともあります。 –

0

これらのサブクエリをすべて用意する必要はありません。あなたはおそらくあなたが行うために探しているものを行うことができますように私は感じる:

SELECT A.user_id, SUM(B.points) + SUM(C.points) total_points_credit FROM user A 
JOIN user_points B ON 
    A.user_id = B.user_id 
JOIN used_points C ON 
    A.user_id = C.user_id 

GROUP BY A.user_id 
+0

、user_points' 'の間、あなたのテーブル名をチェック答えをありがとう...私はその方法を試してみますが、今のところ@Giorgos Betsosの答えは働いており、より簡単です。 –