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
¿Fue útil?

Solución

De 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 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top