Sql

3 respostas
edymrex

Gostaria de saber qual a diferença entre “=” e “*=” pra min o efeito das duas é o mesmo, reparem nestas querys:

INSERT INTO ZFATCOMPL(CODCOLIGADA,IDFAT,TIPOFATURA,TIPOEMISSAOFATURA,GERANOTADEBITO)                                                                    
SELECT F.CODCOLIGADA,F.IDFAT,'T',ISNULL(C.TIPOEMISSAOFATURA,'A'),C.GERANOTADEBITO                                                   
FROM FFAT F, FCFOCOMPL C  WHERE F.CODCOLCFO *= C.CODCOLIGADA AND F.CODCFO *= C.CODCFO                                             
AND F.CODCOLIGADA = 1  AND F.IDFAT = 25
INSERT INTO ZFATCOMPL(CODCOLIGADA,IDFAT,TIPOFATURA,TIPOEMISSAOFATURA,GERANOTADEBITO)                                                                    
SELECT F.CODCOLIGADA,F.IDFAT,'T',ISNULL(C.TIPOEMISSAOFATURA,'A'),C.GERANOTADEBITO                                                   
FROM FFAT F, FCFOCOMPL C  WHERE F.CODCOLCFO = C.CODCOLIGADA AND F.CODCFO = C.CODCFO                                             
AND F.CODCOLIGADA = 1  AND F.IDFAT = 25

Tanto com * quannto sem, o retorno dos dados é o mesmo. Alguém sabe pra que utilizar o ‘*’ ?

3 Respostas

Veronicaaa

Se eu não me engano ele funciona como o Left Outer Join. Se você tem registros em uma tabela onde existe uma FK que permite valores NULL a consulta retorna esses registros com FK NULL, se você só utiliza “=” a consulta não retorna esses registros.

edymrex

Obrigado.

thiagopri

Olá,

Visualize o (=) como inner Join, e o (*=) como o left Join, ou seja, quando vc está utilizando *= na primeira query, isso signifca que a query retornará todos os registros da tabela FFAT independente se ele tem associação ou não com a tabela FCFOCOMPL, ou seja, é um left join. Já na segunda query, utilizando somente o =, vc está afirmando para a query que só deseja os registros da tabela FFAT que contiverem associação com a tabela FCFOCOMPL.

O que deve estar acontecendo no seu caso, é que não existe “pai sem filho” no seu caso, ai o resultado da query é o mesmo. Ai vc pode perguntar “Mas pq utilizar left join, não pode ser um problema de integridade ???” … Isso vai depender do seu negócio, imagine uma tablea de categoria e uma de produtos, relacionamento 1 x N … E eu quero listar os dados das categorias que contiverem produtos e das que nao contenham nenhum produto associado tb … ai entra o left join … E para muitos outros casos.

Criado 24 de novembro de 2008
Ultima resposta 24 de nov. de 2008
Respostas 3
Participantes 3