2016-03-22 4 views
1

Ich habe ein Problem, eine SQL-Abfrage zu machen. Ich habe zwei Tabellen 'loans' und 'loan_emilists'Wie bekomme ich Ergebnisse von Join nur, wenn alle Datensätze übereinstimmen

loan table

loan_emitlist table

namens

I Darlehen id aus der ersten Tabelle holen wollen also 'Kredite', wo loan.emilists Tabellenstatus alle 1.

haben Zum Beispiel: -

Darlehens-ID = 1 Weil in der zweiten Tabelle dh 'Darlehens-Darlehen' Darlehens-ID = 1 haben alle Statuswert 1.

MySQL Query: -

SELECT distinct (loans.id) FROM loans LEFT JOIN loan_emilists ON loans.id = loan_emilists.loan_id WHERE loan_emilists.status = 1

Aber es gibt mir 1 und 2 loan.id.

+0

können Sie mir Ihre erwartete Ausgabe? – Sadikhasan

Antwort

2

können Sie verwenden, existiert nicht():

SELECT s.id FROM loans s 
WHERE NOT EXISTS(select 1 from loan_emilists t 
       where s.id = t.loan_id 
        and t.status = 0) 

Dies wird im Fall arbeiten gibt es immer eine Zeile in loan_emilists für jede ID in Form von Darlehen, wenn Sie nicht beitreten müssen, und verwenden Sie dann nicht existiert ():

SELECT DISTINCT s.id FROM loans s 
INNER JOIN loan_emilists s1 
ON(s1.loan_id = s.id and s1.status = 1) 
WHERE NOT EXISTS(select 1 from loan_emilists t 
       where s.id = t.loan_id 
        and t.status = 0) 

Es kann auch mit einem LEFT JOIN erfolgen:

SELECT DISTINCT s.id FROM loans s 
INNER JOIN loan_emilists s1 
ON(s1.loan_id = s.id and s1.status = 1) 
LEFT JOIN loan_emilists t 
ON(t.loan_id = s.id AND t.status = 0) 
WHERE t.loan_id is null 
+0

Großartig .. danke :) – Sonia

Verwandte Themen