Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kania

Consulta em 2 tabelas

Recommended Posts

Olá pessoal,

 

Gente estou tentando fazer um select em 2 tabelas diferentes, porem de uma forma diferente e nem sei se da para fazer isto, vejam meu código inicial em uma tabela apenas.

 

Set RS = Server.CreateObject("adodb.recordset")
SQL = "SELECT nome, inscricao, count(*) total FROM ASSOCIADOS3 WHERE fechamento = '"&session("logar")&"' and tipo not in ('LV','FL','CD')  group by fechamento"
RS.Open SQL,Conn,3,3
if RS.eof then
total = "0 fechamentos"
elseif Cint(Rs("total")) => 20 then
total = "Parabéns você já tem "&Rs("total")&" fechamentos"
else
total1 = 20-Cint(Rs("total"))
total ="Você tem "&Rs("total")&" fechamento(s), faltam apenas "&total1
end if
Rs.close
Set Rs = nothing

o que preciso das tabelas

 

tabela ASSOCIADOS3

 

nome, incricao, fechamento (preciso que seja efetuada a contagem de quantos nomes tem no campo fechamento iguais e que correspondem a mesma inscrição, conforme esta acima no código)

 

tabela VENDAS3

 

incricao, fechamento (preciso que seja efetuada a contagem de quantos nomes tem no campo fechamento iguais e que correspondem a mesma inscrição)

 

aparentemente as 2 consultas seriam iguais, porem eu preciso fazer uma comparação no meio de tudo isto, seguindo algumas regras e foi ai que me atrapalhei.

 

1 - fazer a contagem na tabela VENDAS3 e ver quantos tem para aquela inscrição, caso não possua nenhum ai ele passa a verificar na tabela ASSOCAIDOS3, caso também não tenham nenhum ele informa que o valor é zero (0).

2 - caso seja encontrado na tabela VENDAS3 algum fechamento para aquela incrição, então verificar na tabela ASSOCIADOS3 se também tem e caso tenha verificar se este fechamento não tem a mesma incrição do que foi encotrado na tabela ASSOCAIDOS3.

 

Nossa complicado né gente, tnato que eu to tatanod fazer aqui algo direto na consulta para ver se da certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal acho que da para fazer diferente somente listando o que for encotrado tipo assim:

 

SELECT * FROM ASSOCIADOS3 t1, VENDAS3 t2 WHERE t1.fechamento = '"&session("logar")&"' and t2.fechamento = '"&session("logar")&"' order by t1.nome

Porem neste select não sei o porque esta vindo um monte de registros e não somente os que tem fechamentos igual a session("logar"), estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente tentei assim

 

SELECT t1.nome, t1.inscricao,t1.fechamento, t2.inscricao, t2.fechamento FROM ASSOCIADOS3 t1, VENDAS3 t2 WHERE t1.fechamento = 'anderson2008' and t2.fechamento = 'anderson2008' and t1.tipo not in ('lv','cd','fl') group by t1.inscricao order by t1.nome

mas a listagem esta vindo toda maluca vejam

 

nome | inscricao | fechamento | inscricao | fechamento

 

DEJANIRA MARIA DA CONCEIÇÃO | DEJAMACO | ANDERSON2008 | LORA | ANDERSON2008

ELOISA CRISTINA DE OLIVEIRA CASTRO | ELOISA2008 | ANDERSON2008 | LORA | ANDERSON2008

IRENICE BATISTA SIQUEIRA MENDES | NICEMENDES | ANDERSON2008 | LORA | ANDERSON2008

IVETE SONIA PACHECO | SONIA2008 | ANDERSON2008 | LORA | ANDERSON2008

MAROLICE RODRIGUES MARTINS | MARO2008 | ANDERSON2008 | LORA | ANDERSON2008

MÁRCIO ANTUNES MOREIRA | ANTUNES | ANDERSON2008 | LORA | ANDERSON2008

OZENIR LIMA SILVA | OZENIR2008 | ANDERSON2008 | LORA | ANDERSON2008

 

observem que a penutma coluna da pesquisa vem sempre a mesma inscricao, não deveria, teria que ser a inscricao vinculada a aquele fechamento, como nas 2 primeiras colucas, sem contar que não esta vindo todos os nomes como deveria..

 

O que estou errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Giesta, obrigado por sua resposta, assim, o caso é que se eu faço um select como este que você apresentou acima ele me traz uma consulta repitida, com nomes repetidos, e também tem alguns tipos de registros que não podem ser considerados na tabela, por isso estou usando o t1.tipo para pegar somente um determinado tipo de associado, e estou tentando usar o group by para juntar tudo que for com a mesma incrição, mas não estou saebndo como fazer para juntar colunas iguais de 2 tabelas diferente, vou simplificar abaixo.

 

veja tenho a tabela ASSOCIADOS3 e a VENDAS3

Se eu dar um select separadamente em cada um delas para ver o que preciso

 

ASSOCIADOS3

SELECT nome,inscricao, fechamento FROM ASSOCIADOS3 WHERE FECHAMENTO = 'anderson2008'

RESULTADO DESTA PESQUISA

 

NOME____________________________________________INSCRICAO_______FECHAMENTO

============================================================================

OZENIR LIMA SILVA_______________________________OZENIR2008______ANDERSON2008

MAROLICE RODRIGUES MARTINS______________________MARO2008________ANDERSON2008

DEJANIRA MARIA DA CONCEIÇÃO_____________________DEJAMACO________ANDERSON2008

IRENICE BATISTA SIQUEIRA MENDES_________________NICEMENDES______ANDERSON2008

ELOISA CRISTINA DE OLIVEIRA CASTRO______________ELOISA2008______ANDERSON2008

IVETE SONIA PACHECO_____________________________SONIA2008_______ANDERSON2008

MÁRCIO ANTUNES MOREIRA__________________________ANTUNES_________ANDERSON2008

 

VENDAS3

SELECT inscricao, fechamento FROM VENDAS3 WHERE FECHAMENTO = 'anderson2008'

RESULTADO DESTA PESQUISA

 

 

INSCRICAO_______FECHAMENTO

=================================

OZENIR2008______ANDERSON2008 *

MARO2008________ANDERSON2008 *

DEJAMACO________ANDERSON2008 *

NICEMENDES______ANDERSON2008 *

EDIVAL2008______ANDERSON2008

IVONETE_________ANDERSON2008

ELOISA2008______ANDERSON2008 *

JOSY2008________ANDERSON2008

SONIA2008_______ANDERSON2008 *

ANTUNES_________ANDERSON2008 *

NILZAMARIA______ANDERSON2008

 

 

Note que marqui com * todos os resultados que estão coincidindo nas 2 tabelas, é isto que preciso agrupar, tudo que estiver em uma tabela e também na outra seja retornado somente com um registro, é ai que não to conseguindo fazer.

 

tentei utilizar um INNER JOIN na tabela para ver se dava certo, mas veja os resultados que deu

 

CONSULTA COM INNER JOIN

SELECT a.inscricao as CADASTROS_COM_FECHAMENTO
FROM ASSOCIADOS3 a 
inner join
VENDAS3 v
on a.inscricao = v.inscricao and a.fechamento = 'anderson2008'

 

OZENIR2008

MARO2008

DEJAMACO

NICEMENDES

JOSY2008

ANTUNES

ELOISA2008

SONIA2008

NILZAMARIA

 

note que se compararmos os 2 outros selects, veremos que esta faltando nomes no select do INNER JOIN

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui cegar a um select que aparentemente resolveu, veja:

 

SELECT a.nome, a.inscricao, v.inscricao FROM ASSOCIADOS3 a  inner join VENDAS3 v on a.inscricao = v.inscricao and a.fechamento = 'anderson2008' and a.tipo = 'AC'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, infelizmente acabei vendo que minha consulta esta errada ainda, pois em outros testes esta trazendo as informações erradas, acredito que seja por causa do seguinte.

 

estou fazendo a seguinte comparação a.inscricao = v.inscricao ou seja ele só vai mesmo trazer os dados caso as 2 tabelas tenhas dados com a mesma inscrição, porem e se caso o cadastro não tiver sido colocado o fechamento pela tabela associados e sim vendas, ai lascou, hehehe

 

è que os cadastros antigos estavam sendo colocados os fechamentos na tabela associados, e a 1 semana atraz mudamos por questões internas isto, desde então o fechemnto esta sendo inserido na tabela vendas, logo eu preciso fazer o select de forma que ele veja se o registro existe na tabela vendas e na tabela assocaidos caso exista me traga somente um, e se caso não exista na tabela associados ele traz somente o da tabela associados

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.