Pergunta

O que é a sintaxe para especificar uma esquerda Junte usando pré sintaxe ANSI-92 (ou seja, * =) quando parte da cláusula WHERE tem um 'igual a alguma constante' condição? (Neste caso 100 é a constante)

Exemplo:


SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo

Neste caso, eu quero que todos os registros da tabela 't' derivada, mesmo se 't1' não tem jogo. Quero t1.ID para retornar NULL na cláusula Select quando uma linha correspondente no SEQNO não existe em 't'.

O erro que eu estou recebendo é "Ambos os termos de uma associação externa deve conter colunas".

Estou executar esta consulta no SQL Server 2005 para agora, mas ele acabará por ser usado contra uma implementação Sybase, que exige que o velho se juntar a sintaxe.

Agradecemos antecipadamente

Foi útil?

Solução

Eu acho que isso vai fazê-lo, mas você tem que testar para ter certeza:

SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID

Observe que eu inverteu a ordem por parte SEQNO, a melhor indicada que é o lado esquerdo da junção.

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