2016-05-06 16 views
0

Wie im Bild unten gezeigt, muss ich alle Kunden mit und ohne Kredite filtern.MySQL führen Union mit mehr Join-Tabellen

enter image description here

Hier ist meine mysql query:

SELECT 
    cum.id, 
    lhh.mst_customer_id, 
    cum.first_name, 
    cum.middle_name, 
    cum.last_name, 
    cum.name_ins, 
    lhh.loan_amount, 
    lhh.date_granted, 
    lhh.loan_duration, 
    lhh.status 
FROM 
    loan_management_app.trans_cus_has_loan_header lhh 
LEFT JOIN 
    loan_management_app.mst_customer cum 
ON 
    (
     lhh.mst_customer_id = cum.id) 
UNION 
SELECT 
    cum.id, 
    lhh.mst_customer_id, 
    cum.first_name, 
    cum.middle_name, 
    cum.last_name, 
    cum.name_ins, 
    lhh.loan_amount, 
    lhh.date_granted, 
    lhh.loan_duration, 
    lhh.status 
FROM 
    loan_management_app.trans_cus_has_loan_header lhh 
RIGHT JOIN 
    loan_management_app.mst_customer cum 
ON 
    (
     lhh.mst_customer_id = cum.id) 
INNER JOIN 
     loan_management_app.mst_loan lon 
ON 
    (
     lhh.mst_loan_id= lon.id) 
INNER JOIN 
     loan_management_app.trans_loan_has_interest lhi 
ON 
     (lhi.mst_loan_id=lon.id) 
INNER JOIN loan_management_app.mst_interest mi 
ON 
     (mi.id=lhi.mst_interest_id) ; 

Aber es gibt nach wie vor nur die Menschen mit loans.Any Hilfe dieses spürbar wäre in Bezug auf. Danke im Voraus.

Antwort

2

Sie machen eine LINKE VERBINDUNG mit mst_customer ... so erhalten Sie alle Darlehensverwaltung, auch wenn Sie keinen Kunden haben.

LEFT JOIN 
    loan_management_app.mst_customer cum 

vielleicht versuchen RIGHT JOIN verwenden:

RIGHT JOIN 
    loan_management_app.mst_customer cum 

Auch können Sie diese Abfrage verwenden, von 'mst_customer' mit allen Linken gehen verbindet. So etwas Ähnliches:

SELECT * FROM mst_customer mc 
LEFT JOIN trans_cus_has_loan_header tchl ON mc.id = tchl.mst_customer_id 
LEFT JOIN mst_loan ml ON ml.id = tchl.mst_loan_id 
LEFT JOIN trans_loan_has_interest tlhi ON tlhi.mst_loan_id = ml.id 
LEFT JOIN mst_interest mi ON mi.id = tlhi.mst_interest_id 

Ich hoffe, das letzte wird für Sie arbeiten :-)

+0

Ja Es funktioniert .. Danke .. :) –

+0

Sie brauchen UNION nicht für diesen Fall. Wenn Sie eine andere Kundentabelle mit mehr Zeilen (und denselben Spalten) gehabt hätten, müssten Sie UNION ALL mit customers_2 tun, um alle Zeilen dieser 2 Tabellen zu erhalten. Grüße. – Grommy