Ver Mensaje Individual
  #10 (permalink)  
Antiguo 16/03/2011, 11:26
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: consultas a varias tablas

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):
Código MySQL:
Ver original
  1. proveedores P
  2.     LEFT JOIN monedas M ON P.cuenta_cor= M.mone_id
  3.     LEFT JOIN condicion_iva C ON P.situ_iva=C.condicion_iva_id
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
  1.     proveedores P
  2.     LEFT JOIN monedas M ON P.cuenta_cor= M.mone_id
  3.     LEFT JOIN condicion_iva C ON P.situ_iva=C.condicion_iva_id
  4.     (razon_social  LIKE '$nombre_proveedor%'  
  5.     OR proveedor_id LIKE '$nombre_proveedor%' ) AND (P.campo1=C.campo3 AND M.campo1=C.campo2)
  6. ORDER BY proveedor_id ASC
  7. LIMIT 0, 10
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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)