A eso precisamente iba.
Me explico: MySQL sólo puede ejecutar una consulta en forma expresa. Eso significa que la condición establecida en el FROM y el WHERE debe cumplirse para que se devuelvan registros. Si lo que tu quieres es que se cumpla este FROM (el OUTER no produce efectos en MySQL, sólo existe para usar conexiones con ODBC):
Significa que quieres a todos los proveedores, sin distinción de monedas o de condición de IVA, ya que te devolverá todos los proveedores, y NULL donde los datos de ese provedor no tengan relación con las otras tablas (estas cosas las puedes leer en el Manual de Referencia).
Ahora bien, respecto a la ora condición adicional, si esa es una condición
agregada a las que ya están definidas en el FROM, corresponde que vayan en el WHERE, donde lo que sucederá es que descartará todos los registros que no la cumplan:
Código MySQL:
Ver original proveedores P
LEFT JOIN condicion_iva C
ON P.situ_iva
=C.condicion_iva_id
(razon_social
LIKE '$nombre_proveedor%' OR proveedor_id
LIKE '$nombre_proveedor%' ) AND (P.campo1
=C.campo3
AND M.campo1
=C.campo2
)
Pero si se trata de una condición para que se muestre o no un dato adicional a los que ya devuelve el SELECT, sólo se puede hacer de la forma que te dije: Creando una columna con una función IF(), como ya te mostré.
A diferencia de esto, Oracle permite consultas que pueden resolver una u otra forma de SELECT según ciertas condiciones. Pero ese no es el caso de MySQL.