*=en Sybase SQL
tsql join (5)
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.