Mệnh đề where giới hạn trên các bảng nối bên trái đang loại bỏ kết quả mong muốn do các bản ghi null ... Vì vậy, hãy di chuyển các giới hạn đến chính phép nối để giới hạn được áp dụng TRƯỚC khi phép nối, do đó giữ các bản ghi giá trị null.
SELECT i.*,r.*,r2.*, r.points+r2.points AS sum_points
FROM list_couples AS l
LEFT JOIN rank AS r ON l.p_1=r.player
and r.week='$week' AND r.anno='$anno'
LEFT JOIN rank AS r2 ON l.p_2=r2.player
and r2.week='$week' AND r2.anno='$year'
ORDER BY sum_points DESC
Vì sao Diêm Vương không có tuần / năm (thông báo) nên mệnh đề where sẽ loại bỏ kỷ lục đó. bằng cách di chuyển các giới hạn cho phép nối, bộ lọc được áp dụng trước các lần xuất hiện phép nối, do đó giữ cho phép nối bên ngoài LEFT.
Nói một cách khác, Mệnh đề WHERE đang làm cho bên trái tham gia một bên trong!