2016-12-13 164 views
0

我有一个表,称为用户,其中有用户和各自referralIds。一些用户没有referralIds并且是NULL。Mysql左连接不返回空值

我有第二个表称为交易其中sum(transactions.amount)会给我的客户中产生,只要收益为TRANSACTION_TYPE = 1个

问题:我在做一个左连接,将显示我的收入根据referralId生成。我希望有一个小组能够显示我的收入来自没有推荐项的用户。然而,空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为我工作。你应该试试看