Pregunta
Mantengo un código que usa un operador *= en una consulta a una base de datos Sybase y no puedo encontrar documentación al respecto.¿Alguien sabe qué hace *=?Supongo que es una especie de unión.
select * from a, b where a.id *= b.id
No puedo entender en qué se diferencia esto de:
select * from a, b where a.id = b.id
Solución
Mesas interiores y exteriores.
Los términos tabla exterior y tabla interior describen la ubicación de las tablas en una unión exterior:
En una combinación izquierda, la tabla exterior y la tabla interior son las tablas izquierda y derecha respectivamente.La tabla exterior y la tabla interior también se denominan tablas que conservan filas y tablas que suministran nulos, respectivamente.
En una unión derecha, la tabla exterior y la tabla interior son las tablas derecha e izquierda respectivamente.
Por ejemplo, en las consultas siguientes, T1 es la tabla exterior y T2 es la tabla interior:
- T1 izquierda unirse a T2
- T2 derecha unirse a T1
O bien, utilizando la sintaxis de Transact-SQL:
- T1 *= T2
- T2 =* T1
Otros consejos
Significa unión externa, un = simple significa unión interna.
*= is LEFT JOIN and =* is RIGHT JOIN.
(o viceversa, lo sigo olvidando porque ya no lo uso y Google no me ayuda cuando busco *=)
Por supuesto tú debería escríbelo de esta manera:
SELECT *
FROM a
LEFT JOIN b ON b.id=a.id
La sintaxis a,b es mala.
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 donde b.id = a.id para devolver una respuesta
select * from a, b where a.id *= b.id
Rellenará las columnas de b con valores nulos cuando no haya una fila en b donde b.id = a.id.