2016-12-13 4 views
0

Ich habe eine Tabelle namens Benutzer, die Benutzer und entsprechende ReferralIds hat. Einige der Benutzer haben keine Verweis-IDs und sind NULL.Mysql Links Join keine Nullwerte

Ich habe eine zweite Tabelle namens Transaktionen, bei denen Summe (transactions.amount) mir die Einnahmen geben, die der Kunde erzeugt, solange TRANSACTION_TYPE = 1

Problem: Ich mache eine linke dass mich Einnahmen kommen wird zeigen, generiert pro VerweisID. Ich will eine Gruppe, die mir Einnahmen zeigt, die von Benutzern generiert werden, die keine referralIds haben. Allerdings kehrt Null referralId NULL Umsatz als auch

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 

Antwort

0

In diesem Fall bitte ein INNER JOIN stattdessen in Ihrer äußeren Abfrage zu tun. Darüber hinaus sehen Sie keinen Grund, warum Sie diese äußere Abfrage überhaupt benötigen. Ihre innere Unterabfrage sollte in der Lage sein, die erforderlichen Daten zu erhalten.

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 für mich gearbeitet. Sie sollten es versuchen