2016-04-10 12 views
0

Ich habe zwei Mysql-Abfragen:Wie abfragen zwei differents MySQL-Tabellen und vergleichen Sie die Ergebnisse

1:

select TblC.name, 
SUM(TblC.total) as Sum 
from TblC 
left join TblCli on TblC.id_cli = TblCli.id 
group by TblCli.name asc 

Das Ergebnis ist

NAME  SUM 
john 1000 
peter 500 
Alicia 300 

2:

select TblCli.name, 
SUM(TblRec.total) as Pay 
from TblRec 
left join TblCli on TblRec.id_cli = TblCli.id 
group by TblCli.name asc 

Das Ergebnis ist

NAME Pay 
john 500 
peter 100 

Es gibt zwei verschiedene Tabellen ohne direkte Beziehung Ich brauche diese zwei Abfragen zu verbinden und ein Ergebnis wie folgt zu erhalten:

NAME  SUM PAY Difference 
john  1000 500   500 
peter  500 100   400 
Alicia 300 0   300 

Wie kann ich das durchführen?

Antwort

0

Folgendes sollte funktionieren. Demo mit Ihren Daten: http://sqlfiddle.com/#!9/ba6264/6

ich sehr empfehlen Sie tun, schließt sich von TblCli.id statt TblCli.name

select A.name, sum , IFNULL(pay,0) as pay, (sum - IFNULL(pay,0)) Difference FROM 
    (select TblC.name, 
    SUM(TblC.total) as Sum 
    from TblC 
    left join TblCli on TblC.id_cli = TblCli.id 
    group by TblCli.name) A 
LEFT JOIN 
    (select TblCli.name, 
    SUM(TblRec.total) as Pay 
    from TblRec 
    left join TblCli on TblRec.id_cli = TblCli.id 
    group by TblCli.name) B 
ON A.name = B.name; 
+0

Rahul, Ihre Antwort war ausgezeichnet, funktioniert super. Wirklich Danke. –

+0

Großartig. Bitte akzeptieren Sie die Antwort, wenn Sie es mögen – Rahul