2016-09-19 2 views
0

Ich habe eine Abfrage, die zwei Tabellen mit einer Datumsbedingung verbindet. Ich möchte nur Zeilen für gestrige Transaktionen abrufen.Falsche Zeilen mit Datumsbedingung zurückgegeben

Hier ist die Abfrage:

Wenn ich hinzufügen, die UND-Bedingung alle noch die Zeilen zurückgegeben werden, aber mit NULL-Werte diejenigen, die nicht passenden Zustand.

SELECT 
B.txn_id, 
B.txn_time, 
B.svc_method, 
B.customer_number, 
B.amount, 
B.amount_commission, 
B.status, 

A.partner_txn_id, 
A.session_id as partner_session_id 

FROM Partner A 
LEFT JOIN Transaction B 
ON A.log_id = B.txn_id 
AND B.txn_time >= (CURDATE() - INTERVAL 1 DAY); 

Antwort

1

Entweder sollte LEFT

zu INNER JOIN

oder

Bewegung der Aufruf von WHERE Abschnitt

B.txn_time >= (CURDATE() - INTERVAL 1 DAY) 
+0

Dank JOIN ändern! Ich weiß nicht, wie ich das verpasst habe –

+0

Das LINKE JOIN zu behalten, aber die Bedingung in die WHERE-Klausel zu verschieben, sieht für mich wie ein Programmierfehler aus ... Wechseln Sie stattdessen einfach zu INNER JOIN. – jarlh

Verwandte Themen