Es completamente razonable que te devuelva todo, porque eso es precisamente lo que hace el LEFT JOIN: Devolver todo lo de la tabla derecha, tenga o no relación con la tabla izquierda.
Pero además, tu estás pidiendo que te devuelva todo aquello que coincida con al menos uno de los criterios del WHERE, ya que todas las condiciones están definidas como OR...
En definitiva, esa consulta no es buena.
Si lo que quieres es darle condiciones dinámicas, de modo tal que puedas poner un sólo parámetro o más de uno, y te responda en base a eso, es mejor que los parámetros del WHERE los vayas agregando dinámicamente, pero no que sean fijos. Eso requiere que valides uno a uno los datos ingresados y que vayas agregando la condición ingresada para esa sola ejecución.
¿Se entiende?
Como sugerencia...
1) No uses LEFT JOIN a menos que eso sea lo que realmente necesitas. Usa INNER JOIN.
2) No uses paréntesis por que si. Generan cambios en el parseo, en especial en el FROM.
3) Usa alias. La consulta como está es muy difícil de leer por exceso de nombres:
Código SQL:
Ver originalSELECT *
FROM notificaciones N LEFT JOIN victimas V
ON n.identificacion = V.documento =
WHERE N.resolucion = '$resolucion'
OR N.identificacion = '$documento'
OR N.descripcion = '$descripcion'
OR V.primer_nombre = '$primer_nombre'
OR V.segundo_nombre = '$segundo_nombre'
OR V.primer_apellido = '$primer_apellido'
OR V.segundo_apellido = '$segundo_apellido'
OR V.vereda_declarante = '$vereda'
OR V.tipo_documento = '$tipo_documento'
OR N.guia = '$guia'
OR N.tipo_notificacion = '$tipo_notificacion'
OR N.tramitador = '$tramitador'
OR V.departamento_declarante = '$departamentos_cont'
ORDER BY primer_apellido