Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Left Outer Join gibt nicht alle Zeilen aus meiner linken Tabelle zurück?

Nannes Antwort gegeben erklärt, warum Sie nicht das gewünschte Ergebnis erhalten (Ihre WHERE-Klausel entfernt Zeilen), aber nicht, wie Sie es beheben können.

Die Lösung besteht darin, WHERE in AND zu ändern, sodass die Bedingung Teil der Join-Bedingung ist und kein Filter, der nach dem Join angewendet wird:

SELECT day.days, COUNT(*) as opens 
FROM day 
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date)) 
AND tracking.open_id = 10 
GROUP BY day.days

Jetzt sind alle Zeilen in der linken Tabelle im Ergebnis vorhanden.