Duvida em SQL - Help!
18/09/2014
0
Estou começando meu aprendizado em SQL e encontrei um problema que não consigo solucionar.
Suponha que temos uma tabela de empresas e outra de um "arquivo" que essa empresa deve enviar.
Consegui listar todas empresas que não enviaram com o seguinte o querry:
select
nome,
responsavel
from empresas as emp
where
codigo not in (select codigoemp from arquivo where mes = 7 and ano = 2014)
Nesse caso, caso o codigo de identificação da empresa não estivesse contido no arquivo, significaria que este não enviou no mês especificado.
Sabendo que, essas empresas enviaram ao menos uma vez o arquivo e na tabela de arquivo tem o nome do responsável do envio e o email do mesmo.
O que eu queria fazer é conseguir o email de todas empresas que não enviaram. Se alguém souber alguma solução sem usar tabela temporária, agradeço muito.
Thayrone Santos
Posts
18/09/2014
Leandro Chiodini
Primeiramente temos que entender o seguinte.
O e-mail esta nesta tabela de arquivo certo?
Se sim, vai existir um registro mesmo não tendo enviado o arquivo?
se sim..
Você pode resolver da seguinte forma.
select
emp.nome,
emp.responsavel,
arq.email
from empresas as emp, arquivo as arq
where
arq.mes = 7 and arq.ano = 2014
Voce precisa ter um relacionamento entre as duas tabelas.
algo como
arq.IdEmpresa = emp.IdEmpresa
att
Chiodini
18/09/2014
Thayrone Santos
Desculpas pela mal formulação da minha duvida e obrigado pela atenção.
Na Tabela de empresas temos: Nome, codigo, email, responsavel pelo envio.
Na Tabela de arquivos temos: codigoempresa, email, resposavel pelo envio.
As tabelas funcionam da seguinte maneira.
Em aquivos SOMENTE as empresas que enviaram possuem dados referente a tal mês.
(suponha que as empresas enviaram ao menos uma vez e por isso é certeza de encontra o Email do responsável pelo envio)
Em Empresas, caso o arquivo de uma 'x' empresa não sido enviado em tal mês, os campos das informações email e responsavel ficarão vazias.
Esse Where que você usou consegue o email das empresas que enviaram, mas, eu quero das que não enviaram. No momento que especifico o mes e ano do arquivo, caso a empresa não tenha enviado, o dados do arquivo não existem naquele mês pra empresa sab?
select
nome,
responsavel
from empresas as emp
where
codigo not in (select codigoemp from arquivo where mes = 7 and ano = 2014)
Com esse Where consegui pegar todos que não enviaram, pois não tem nenhum dado deles no mês 07 do ano 2014.
Tentei adicionar um subselect após responsavel:
(select arquivo.email from arquivos where arquivo.codigo = emp.codigo) as ultimo email
mas deu erro ; /
18/09/2014
Leandro Chiodini
tente algo asism
select
emp.nome,
emp.responsavel,
arq.email
from empresas as emp, arquivo as arq
where
arq.codigoempresa not in (select codigoempresa from arquivo where mes = 7 and ano = 2014)
deve funcionar.
Clique aqui para fazer login e interagir na Comunidade :)