Usuário com melhor resposta
SP com EXCEPT ou outra hipotese

Pergunta
-
Boas..Tenho duas tabelas...EntradasCodEntradaDataEntrada(...)SaidasCodSaidaDataSaida(...)Saidas_LinhasCodSaidaLinhaCodSaidaCodEntradaAgora preciso de saber os dados da Entrada que aparecem na tabela Saidas_Linhas e os que não aparecem.Pensei em fazerSELECT dbo.Mobiliario_Entradas.CodEntradaFROM dbo.Mobiliario_EntradasEXCEPTSELECT dbo.Mobiliario_saidaslinhas.CodEntradaFROM dbo.Mobiliario_saidaslinhasMas depois não consigo mostrar os dados da entrada..Obrigado desde já..
Respostas
-
Olá Vitor,
Você não passou maiores informações sobre quantidade de registros ou mesmo quantas vezes esta query será executada, mas dê uma olhada nas duas opções abaixo, para ver se clareia um pouco as tuas idéias.
Code SnippetSELECT
*FROM
SAIDAS_LINHASWHERE
SAIDAS_LINHAS.CodEntrada NOT IN ( SELECT CodEntrada FROM ENTRADAS)
ou
SELECT
ENTRADAS.*FROM ENTRADAS
LEFT
JOIN SAIDAS_LINHASON
ENTRADAS.CodEntrada = SAIDAS_LINHAS.CodEntradaWHERE
SAIDAS_LINHAS.CodEntrada IS NULLUm abraço,
Raul Santos Neto
Todas as Respostas
-
Olá Vitor,
Ainda não me veio nada realmente performático, mas tente o seguinte:
Code Snippet;WITH Ausentes AS (
SELECT dbo.Mobiliario_Entradas.CodEntrada, 'Ausente' As Tipo
FROM dbo.Mobiliario_Entradas
EXCEPT
SELECT dbo.Mobiliario_saidaslinhas.CodEntrada, 'Ausente'
FROM dbo.Mobiliario_saidaslinhas),Presentes AS (
SELECT dbo.Mobiliario_Entradas.CodEntrada, 'Presente' As Tipo
FROM dbo.Mobiliario_Entradas
INTERSECT
SELECT dbo.Mobiliario_saidaslinhas.CodEntrada, 'Presente'
FROM dbo.Mobiliario_saidaslinhas)SELECT * FROM Ausentes
UNION ALL
SELECT * FROM Presentes[ ]s,
Gustavo Maia Aguiar
-
-
Olá Vitor,
Talvez eu não tenha entendido perfeitamente o que você precisa.
Você poderia exemplificar ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
-
-
-
Oi Vitor,
Mas qual o problema então do primeiro post se ele te atende ? Ele não mostra os dados que estão em entradas e não estão em Saidas_Linhas ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.space.live.com
-
Olá Vitor,
Você não passou maiores informações sobre quantidade de registros ou mesmo quantas vezes esta query será executada, mas dê uma olhada nas duas opções abaixo, para ver se clareia um pouco as tuas idéias.
Code SnippetSELECT
*FROM
SAIDAS_LINHASWHERE
SAIDAS_LINHAS.CodEntrada NOT IN ( SELECT CodEntrada FROM ENTRADAS)
ou
SELECT
ENTRADAS.*FROM ENTRADAS
LEFT
JOIN SAIDAS_LINHASON
ENTRADAS.CodEntrada = SAIDAS_LINHAS.CodEntradaWHERE
SAIDAS_LINHAS.CodEntrada IS NULLUm abraço,
Raul Santos Neto
-