sql tsql join sybase

*=en Sybase SQL



tsql join (5)

Desde http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm :

Mesas interiores y exteriores

Los términos tabla externa y tabla interna describen la ubicación de las tablas en una combinación externa:

  • En una combinación izquierda, la tabla externa y la tabla interna son las tablas izquierda y derecha, respectivamente. La tabla externa y la tabla interna también se conocen como las tablas de conservación de filas y de suministro nulo, respectivamente.

  • En una unión a la derecha, la tabla externa y la tabla interna son las tablas derecha e izquierda, respectivamente.

Por ejemplo, en las consultas a continuación, T1 es la tabla externa y T2 es la tabla interna:

  • T1 dejó unir T2
  • T2 derecho unirse a T1

O bien, usando la sintaxis de Transact-SQL:

  • T1 * = T2
  • T2 = * T1

Estoy manteniendo un código que usa un operador * = en una consulta a una base de datos Sybase y no puedo encontrar documentación sobre él. ¿Alguien sabe qué * = hace? Supongo que es una especie de unión.

select * from a, b where a.id *= b.id

No puedo entender cómo esto es diferente de:

select * from a, b where a.id = b.id


Por supuesto, deberías escribirlo de esta manera:

SELECT * FROM a LEFT JOIN b ON b.id=a.id

La sintaxis a, b es malvada.


Significa unión externa, un simple = significa unión interna.

*= is LEFT JOIN and =* is RIGHT JOIN.

(o viceversa, sigo olvidándome ya que no lo estoy usando más, y Google no es útil cuando busca * =)


Sintaxis ANSI-82

select * from a , b where a.id *= b.id

ANSI-92

select * from a left outer join b on a.id = b.id


select * from a, b where a.id = b.id

Requiere que exista una fila en donde b.id = a.id para devolver una respuesta

select * from a, b where a.id *= b.id

Llena las columnas de b con nulos cuando no había una fila en b donde b.id = a.id.