Lef joins y sintaxis

27/09/2006 - 11:50 por solusoft | Informe spam
Hola a todos,

tengo esta sql:


select t.CD_DIC, t.NM_IDIOMA, t.DS_TEXTO1 , cd.*
from GCL_C_DICAPLIC cd, GCL_TRADUCCIONES t
where
cd.CD_DIC *= t.CD_DIC
and CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'

Y me devuelve un registro. Para ese registro los valores de los campos
t.CD_DIC, t.NM_IDIOMA, t.DS_TEXTO1 son NULL.

t.CD_DIC, t.NM_IDIOMA son campos clave de la tabla "t".


Ahora hago la sql con la sintaxis recomendada:

select GCL_TRADUCCIONES.CD_DIC, GCL_TRADUCCIONES.NM_IDIOMA,
GCL_TRADUCCIONES.DS_TEXTO1 , GCL_C_DICAPLIC.*
from GCL_C_DICAPLIC
left join GCL_TRADUCCIONES
on GCL_TRADUCCIONES.CD_DIC = GCL_C_DICAPLIC.CD_DIC

where
CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'

Y no me aparece ningún registro.

Qué se me puede estar escapando ???

Un saludo cordial.

Preguntas similare

Leer las respuestas

#1 Maxi
27/09/2006 - 13:51 | Informe spam
Si lees tus libros on line vera que no se recomienda el uso de *= ya que en
ciertas ocasiones puede retornar valores no deseados. De hecho ya no es mas
compatible con sql2005 ese tipo de sentencias


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"solusoft" escribió en el mensaje
news:
Hola a todos,

tengo esta sql:


select t.CD_DIC, t.NM_IDIOMA, t.DS_TEXTO1 , cd.*
from GCL_C_DICAPLIC cd, GCL_TRADUCCIONES t
where
cd.CD_DIC *= t.CD_DIC
and CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'

Y me devuelve un registro. Para ese registro los valores de los campos
t.CD_DIC, t.NM_IDIOMA, t.DS_TEXTO1 son NULL.

t.CD_DIC, t.NM_IDIOMA son campos clave de la tabla "t".


Ahora hago la sql con la sintaxis recomendada:

select GCL_TRADUCCIONES.CD_DIC, GCL_TRADUCCIONES.NM_IDIOMA,
GCL_TRADUCCIONES.DS_TEXTO1 , GCL_C_DICAPLIC.*
from GCL_C_DICAPLIC
left join GCL_TRADUCCIONES
on GCL_TRADUCCIONES.CD_DIC = GCL_C_DICAPLIC.CD_DIC

where
CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'

Y no me aparece ningún registro.

Qué se me puede estar escapando ???

Un saludo cordial.
Respuesta Responder a este mensaje
#2 Alejandro Mesa
27/09/2006 - 14:29 | Informe spam
solusoft,

Si deseas seleccionar filas a pesar de no cumplir el fiultro en la parte
derecha, correspondiente a las expresiones logicas:

and CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'



entonces debes poner esas expresiones como parte de la condicion de union.

select
b.CD_DIC,
b.NM_IDIOMA,
b.DS_TEXTO1,
a.*
from
dbo.GCL_C_DICAPLIC as a
left join
dbo.GCL_TRADUCCIONES as b
on b.CD_DIC = a.CD_DIC
and b.CD_DIC_N0 = 7
and b.NM_IDIOMA = 46
and b.id_val_clave = '2'
go


AMB


"solusoft" wrote:

Hola a todos,

tengo esta sql:


select t.CD_DIC, t.NM_IDIOMA, t.DS_TEXTO1 , cd.*
from GCL_C_DICAPLIC cd, GCL_TRADUCCIONES t
where
cd.CD_DIC *= t.CD_DIC
and CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'

Y me devuelve un registro. Para ese registro los valores de los campos
t.CD_DIC, t.NM_IDIOMA, t.DS_TEXTO1 son NULL.

t.CD_DIC, t.NM_IDIOMA son campos clave de la tabla "t".


Ahora hago la sql con la sintaxis recomendada:

select GCL_TRADUCCIONES.CD_DIC, GCL_TRADUCCIONES.NM_IDIOMA,
GCL_TRADUCCIONES.DS_TEXTO1 , GCL_C_DICAPLIC.*
from GCL_C_DICAPLIC
left join GCL_TRADUCCIONES
on GCL_TRADUCCIONES.CD_DIC = GCL_C_DICAPLIC.CD_DIC

where
CD_DIC_N0 = 7
and NM_IDIOMA = 46
and id_val_clave = '2'

Y no me aparece ningún registro.

Qué se me puede estar escapando ???

Un saludo cordial.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida