sql >> Base de Datos >  >> RDS >> Mysql

Doble ÚNETE con la misma mesa dos veces

Los límites de la cláusula where en las tablas de combinación izquierda están eliminando los resultados deseados debido a los registros nulos... Así que mueva los límites a la combinación en sí para que el límite se aplique ANTES de la combinación, manteniendo así los registros de valor nulo.

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

Debido a que Plutón no tiene semana/año (año), entonces la cláusula where elimina ese registro. al mover los límites a la unión, el filtro se aplica antes de que ocurra la unión, manteniendo así la unión externa IZQUIERDA.

Dicho de otra manera, ¡la Cláusula WHERE hace que la izquierda se una a la interna!