2016-12-13 6 views
0

私はユーザとそれぞれのreferralIdsを持つユーザと呼ばれるテーブルを持っています。一部のユーザーはreferralIdsを持たず、NULLです。 Mysqlは結合を残してヌル値を返さない

は、私は2番目のテーブルの和(transactions.amountが)私に顧客がいる限り収益を与えると呼ばれる取引を持っているようTRANSACTION_TYPE = 1つの

問題:私は左にそれは私の収入が表示されます参加やっています照会ごとに生成されます。私は、参照元を持たないユーザーによって生成された収入を示すグループを欲しています。しかし、ヌルreferralIdは、同様にNULL収入を返して、その場合には

SELECT 
users.referralId, b.revenue 
FROM users 
     LEFT JOIN 
    (SELECT 
     users.referralId, SUM(transactions.amount) AS revenue 
    FROM 
     transactions 
    LEFT JOIN users ON users.username = transactions.username 
    WHERE 
     transaction_type = 1 and date(created_at) between @start_date and @end_date 
    GROUP BY users.referralId) b ON users.referralId = b.referralId 
group by referralId 

答えて

0

ではなく、あなたの外側のクエリでINNER JOINを行うことを検討します。さらに、外側のクエリがまったく必要な理由を見ないでください。内側のサブクエリは必要なデータを取得できる必要があります。

SELECT 
users.referralId, b.revenue 
FROM users 
     INNER JOIN 
    (SELECT 
     users.referralId, SUM(transactions.amount) AS revenue 
    FROM 
     transactions 
    LEFT JOIN users ON users.username = transactions.username 
    WHERE 
     transaction_type = 1 and date(created_at) between @start_date and @end_date 
    GROUP BY users.referralId) b ON users.referralId = b.referralId 
group by referralId 
0

LEFT OUTER は私のために働いたのJOIN。あなたはそれを試してみるべきです

関連する問題