SQL Server - ¿ *= NO ES LO MISMO QUE LEFT JOIN?

 
Vista:

¿ *= NO ES LO MISMO QUE LEFT JOIN?

Publicado por LGR (2 intervenciones) el 16/05/2007 14:23:15
Hola, tengo una gran duda , ¿*= o left join?

el caso es que estas dos consultas no me devuelven los mismos registros yno lo entiendo:

select py.id_proyecto,cer.id_certificado
from proyectos py LEFT JOIN certificados cer ON PY.ID_PROYECTO = CER.ID_PROYECTO
where cer.id_PROYECTO IS NULL

select py.id_proyecto,cer.id_certificado
from proyectos py ,certificados cer
where cer.id_PROYECTO IS NULL AND CER.ID_PROYECTO =*PY.ID_PROYECTO

la segunda ignora el IS NULL ¿PORQUE?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿ *= NO ES LO MISMO QUE LEFT JOIN?

Publicado por Daniel (2 intervenciones) el 16/05/2007 17:30:54
Referencia a unartículo
http://www.sqlmag.com/Article/ArticleID/44719/sql_server_44719.html

dice:

Someone told me the first statement isn't ANSI standard, but a lot of my existing code uses that syntax. Do I need to change the non-ANSI standard SELECT statements? Does one format perform better than the other?

Según yo interpreto dice: "Alguien me dijo que la primera declaración no es ANSI el estándar, pero la mayor parte de mi código existente usa aquella sintaxis. ¿Tengo que cambiar las declaraciones non-ANSI estándar ESCOGIDAS? ¿Funciona un formato mejor que el otro?"

The only JOIN syntax ANSI discourages is the old standard of specifying an outer join by using an asterisk and equals symbol (*=) Because ANSI SQL-89 didn't support outer joins (ANSI SQL-92 introduced that support)

Segun leo al parecer hay diferencias entre ambas instrucciones.

Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿ *= NO ES LO MISMO QUE LEFT JOIN?

Publicado por LGR (2 intervenciones) el 17/05/2007 12:28:38
sI, tengo las ideas más claras, pero no se cual de las dos deberia usar.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿ *= NO ES LO MISMO QUE LEFT JOIN?

Publicado por Isaías (3308 intervenciones) el 17/05/2007 21:21:39
La respuesta es muy simple, la codificacion *=, =*, etc. es una codificacion antigua, te recomiendo que lo substituyas por JOIN (LEFT, RIGHT, INNER, FULL, OUTER)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar