Transact-SQL outer join o ANSI92

Tania R

Curioso
Tengo una duda en referencia a los parámetros del universo de BO versión XI.
La base de datos con la que estoy trabajando es Sybase y el problema aparece cuando utilizo un outer join y un join en una misma consulta.
El error que obtengo es: Syntax error or access violation: Invalid expresión in WHERE clause of Transact-SQL outer join
Ahora mismo tengo los parámetros que aparecen por defecto y creo que no soportan este tipo de combinaciones en la cláusula where. He cambiado el parámetro ANSI92 a Yes y desaparece el error. Pero, ¿qué implicaciones tiene este cambio? ¿Puede afectar en algo a los resultados de mis otras consultas?
 

mleyzaola

Curioso
En primer lugar te recomiendo evitar los OUTER JOIN, primero porque no son naturales (p.e. cuales son las ventas de los clientes que no han vendido???). Si estas en el tema de los Data Warehouse, esto se remedia agregando registros con valores N/A en las dimensiones y que sustituyan a los NULL en tus tablas de hechos.

Si no tienes otra opcion o bien, si no es un Data Warehouse tu tema, entonces definitivamente utiliza ANSI-99. La version anterior es propicia a errores porque los OUTER JOIN no son explicitos. En SQL Server (alias SYBASE ya que originalmente este producto era de Asthon Tate tambien) se utilizaba *= para simular un LEFT OUTER JOIN. En Oracle era a.campo = b.campo (+) y tenia las mismas deficiencias.

En ANSI-99 es mucho mas claro ya que el LEFT, RIGHT o FULL OUTER JOIN no deja lugar a dudas. Nada mas recuerda dejar los OUTER JOIN al ultimo, de otro modo te devuelve resultados incorrectos.

Saludos!
 
Arriba