Bueno, aclaremos, LEFT JOIN es una forma de JOIN que le indica al DBMS que retorne todo lo que haya en la primera tabla (la de la izquierda del LEFT JOIN ), tenga o no coincidencias con la segunda (la de la derecha). En ese sentido, está cumpliendo bien su tarea: la tabla
smf_notifications no tiene ninguna coincidencia con
smf_members.
Lo que puede que no sepas, es que en el caso de LEFT JOIN el orden de los factores sí altera el producto, porque no es lo mismo la tabla derecha que la izquierda en este caso.
Si estás consultando por los usuarios, esa debe ser la tabla inicial. Si o sí, y todos los LEFT JOIN deben estar soportados por ella.
Si smf_members es la tabla de usuarios, hay que moverla de sitio:
Código MySQL:
Ver original n.ID_NOTI,
n.ID_USER,
n.ID_MEMBER idmiembro,
n.ID_TOPIC,
n.`TYPE`,
n.`DATE`,
men.realName,
men.memberName,
mem.memberName,
m.ID_TOPIC
smf_members men
LEFT JOIN smf_notifications n
ON men.ID_MEMBER
= n.ID_USER
LEFT JOIN smf_messages m
ON n.ID_TOPIC
= m.ID_TOPIC
LEFT JOIN smf_members mem
ON nID_MEMBER
= mem.ID_MEMBER
Ten en cuenta además que si la tabla derecha devuelve NULL con algún usuario, toda tabla que esté enganchada con ella (por ejemplo, smf_messages) tampoco devolverá datos.
¿Se entiende la idea?