Array
(
)

Duvida em SQL - Help!

Thayrone Santos
   - 18 set 2014

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

Chiodini
   - 18 set 2014

Bom dia Thayrone.
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

Thayrone Santos
   - 18 set 2014

Chiodini,

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 ; /

Chiodini
   - 18 set 2014

Opa agora sim amigo.
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.