Pergunta

Eu estou mantendo um código que usa a *= operador em uma consulta a uma base de dados Sybase e eu não posso encontrar documentação sobre ela.Alguém sabe o que *= não?Eu suponho que é algum tipo de associação.

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

Eu não consigo entender como isso é diferente de:

select * from a, b where a.id = b.id
Foi útil?

Solução

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

Interior e exterior tabelas

Os termos de tabela externa e interna tabela descrever a colocação de mesas em uma associação externa:

  • Em um left join, a tabela externa e interna da tabela são as tabelas de esquerda e direita, respectivamente.A tabela externa e interna tabela são também referidos como linha-a preservação e nulo-fornecimento de tabelas, respectivamente.

  • No direito de associação, a tabela externa e interna tabela são a direita e para a esquerda tabelas, respectivamente.

Por exemplo, a consulta abaixo, T1 é a tabela externa e T2 é a tabela interna:

  • T1 left join T2
  • T2 direito de associação T1

Ou, usando a sintaxe Transact-SQL:

  • T1 *= T2
  • T2 =* T1

Outras dicas

Isso significa outer join, uma simples = significa inner join.

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

(ou vice-versa, eu continuo esquecendo desde que eu não estou usando mais, e o Google não é útil quando procurar *=)

Claro, você deve escrever isso da seguinte maneira:

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

A,b sintaxe é mal.

ANSI-82 sintaxe

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

Requer que existe uma linha em que b.id = um.id retornar uma resposta

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

Vai preencher as colunas de b com valores nulos, quando não havia uma linha em b, onde b.id = um.id.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top