Consultas con Left Outer Join

10/01/2007 - 17:39 por Natty | Informe spam
Hola a todos:

Les comento que tengo una vista, donde se realiza una consulta con Left
outer join en SQl Anywhere donde funciona bien, sin embargo como
estamos migrando a SQL express 2005, me encontre que este último es
muy estricto ya que por ejemplo en Anywhere permitia lo siguiente:
Dentro de un LEFT OUTER JOIN poder realizar la condición con otra
tabla declarada fuera del OUTER JOIN pero dentro del FROM como sigue:

Select .
FROM
dba.cli,
dba.tabla2,
dba.tabla3,
dba.tpo_serv left outer join
dba.corporat on
cli.id_corporat = corporat.id_corporat


Y ahora en SQL Express 2005 no lo permite, habrá alguna forma de
realizarlo?? ya intente dos forma diferentes pero ninguna me devuelve
los valores que necesito, les pego la consulta que tengo en SQL
Anywhere:


FROM
dba.nc,
dba.deta_nc,
dba.cli,
dba.vende as tit,
dba.prov_tpo,
dba.suc as suc_nc,
dba.provee,
dba.tpo_serv left outer join
dba.corporat on
cli.id_corporat = corporat.id_corporat left outer join
dba.cen_cos on
nc.id_cencos = cen_cos.id_cencos and
nc.id_cli = cen_cos.id_cli left outer join
dba.depto on
nc.id_depto =depto.id_depto and
nc.id_cencos = depto.id_cencos and
nc.id_cli = depto.id_cli left outer join
dba.vend as aux on
nc.id_vendaux = aux.id_vend left outer join
dba.conce_bol on
prov_tpo_serv.id_provee = conce_bol.id_provee and
deta_nc.det_nc_bol = conce_bol.bol and
deta_nc.id_suc =conce_bol.id_suc left outer join
dba.suc as sucfa on
nc.id_suc_fac = sucfa.id_suc

WHERE

nc.nc_num =deta_nc.nc_num and
nc.id_se = deta_nc.se and
nc.id_suc = deta_nc.id_suc and
nc.estado = 1 and
nc.id_cli = cli.id_cli and
nc.id_vend = tit.id_vende and
deta_nc.prov_tpo = prov_tpo.prov_tpo and
nc.id_suc = suc_nc.id_suc and
prov_tpo.id_provee = provee.id_provee and
prov_tpo.id_serv = tpo_serv.id_tpo_serv



Espero me puedan ayudar
Gracias por todo y les mando un saludo

Att. Natty
 

Leer las respuestas

#1 Jose Mariano Alvarez
10/01/2007 - 19:42 | Informe spam
Debes pasar la condicion del join que esta en el where al join.

Ejemplo

<tabla 1>
JOIN <tabla 2> ON <condicion del join>
JOIN <tabla 3> ON <condicion del join>



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Natty" wrote in message
news:
Hola a todos:

Les comento que tengo una vista, donde se realiza una consulta con Left
outer join en SQl Anywhere donde funciona bien, sin embargo como
estamos migrando a SQL express 2005, me encontre que este último es
muy estricto ya que por ejemplo en Anywhere permitia lo siguiente:
Dentro de un LEFT OUTER JOIN poder realizar la condición con otra
tabla declarada fuera del OUTER JOIN pero dentro del FROM como sigue:

Select .
FROM
dba.cli,
dba.tabla2,
dba.tabla3,
dba.tpo_serv left outer join
dba.corporat on
cli.id_corporat = corporat.id_corporat


Y ahora en SQL Express 2005 no lo permite, habrá alguna forma de
realizarlo?? ya intente dos forma diferentes pero ninguna me devuelve
los valores que necesito, les pego la consulta que tengo en SQL
Anywhere:


FROM
dba.nc,
dba.deta_nc,
dba.cli,
dba.vende as tit,
dba.prov_tpo,
dba.suc as suc_nc,
dba.provee,
dba.tpo_serv left outer join
dba.corporat on
cli.id_corporat = corporat.id_corporat left outer join
dba.cen_cos on
nc.id_cencos = cen_cos.id_cencos and
nc.id_cli = cen_cos.id_cli left outer join
dba.depto on
nc.id_depto =depto.id_depto and
nc.id_cencos = depto.id_cencos and
nc.id_cli = depto.id_cli left outer join
dba.vend as aux on
nc.id_vendaux = aux.id_vend left outer join
dba.conce_bol on
prov_tpo_serv.id_provee = conce_bol.id_provee and
deta_nc.det_nc_bol = conce_bol.bol and
deta_nc.id_suc =conce_bol.id_suc left outer join
dba.suc as sucfa on
nc.id_suc_fac = sucfa.id_suc

WHERE

nc.nc_num =deta_nc.nc_num and
nc.id_se = deta_nc.se and
nc.id_suc = deta_nc.id_suc and
nc.estado = 1 and
nc.id_cli = cli.id_cli and
nc.id_vend = tit.id_vende and
deta_nc.prov_tpo = prov_tpo.prov_tpo and
nc.id_suc = suc_nc.id_suc and
prov_tpo.id_provee = provee.id_provee and
prov_tpo.id_serv = tpo_serv.id_tpo_serv



Espero me puedan ayudar
Gracias por todo y les mando un saludo

Att. Natty

Preguntas similares