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