CONSULTA EM DUAS TABELAS
Pessoal,
Estou precisando de um código que realize as seguintes consultas:
Tenho duas tabelas.
Uma registra uma situação inicial e chama tabela_situacao
a segunda registra as movimentações da tabela_situacao
São documentos que entram no setor e a cada movimentação que o documento sofre precisa ser registrado
Ocorre que devido ao grande volume de documento nem todos sofre modificação, então gostaria de um código que realizasse a seguinte consulta
retornar somente os registros que não coincidam na tabela_movimentação. Segue Exemplo:
tabela_situação
codigo numero situacao
1 1 análise
2 2 análise
3 3 análise
tabela_movimentacçao
codigo numero situacao
1 1 saida
2 1 entrada
3 3 saida
3 3 entrada
3 3 saida
Conforme a demonstração o único registro que não se encontra na tabela_movimentação e o numero 2. Então a consulta teria que retornar o número 2
Gostaria que me ajudassem também em outro código que pudesse me retornar os números que se encontram em cada situação na tabela_movimentação , ou seja os números que se encontram na situação entrada e os números que se encontram na situação saÃda.
Desde já agradeço pela atenção
Conforme a descricão
Estou precisando de um código que realize as seguintes consultas:
Tenho duas tabelas.
Uma registra uma situação inicial e chama tabela_situacao
a segunda registra as movimentações da tabela_situacao
São documentos que entram no setor e a cada movimentação que o documento sofre precisa ser registrado
Ocorre que devido ao grande volume de documento nem todos sofre modificação, então gostaria de um código que realizasse a seguinte consulta
retornar somente os registros que não coincidam na tabela_movimentação. Segue Exemplo:
tabela_situação
codigo numero situacao
1 1 análise
2 2 análise
3 3 análise
tabela_movimentacçao
codigo numero situacao
1 1 saida
2 1 entrada
3 3 saida
3 3 entrada
3 3 saida
Conforme a demonstração o único registro que não se encontra na tabela_movimentação e o numero 2. Então a consulta teria que retornar o número 2
Gostaria que me ajudassem também em outro código que pudesse me retornar os números que se encontram em cada situação na tabela_movimentação , ou seja os números que se encontram na situação entrada e os números que se encontram na situação saÃda.
Desde já agradeço pela atenção
Conforme a descricão
ARCADYUM, boa noite.
Respoondendo a sua Primeira pergunta, segue a consulta:
Respondendo a sua segunda pergunta sege, bom pelo menios o que eu intendi:
Onde está marcado, basta você alterar para Saida que vai saber os itens com situação saida, ok???
Qualquer coisa posta ai de novo.
Abraços.....
Respoondendo a sua Primeira pergunta, segue a consulta:
SELECT tabela_situacao.numero, tabela_situacao.situacao
FROM tabela_situacao LEFT JOIN tabela_movimentacao ON (tabela_movimentacao.numero = tabela_situacao.numero)
WHERE tabela_movimentacao.numero IS NULL;
Respondendo a sua segunda pergunta sege, bom pelo menios o que eu intendi:
SELECT tabela_movimentacao.Numero, tabela_movimentacao.Numero
FROM tabela_movimentacao
WHERE (((tabela_movimentacao.Situacao)=[txt-color=#e80000][Ô]Entrada[Ô][/txt-color]))
GROUP BY tabela_movimentacao.Numero;
Onde está marcado, basta você alterar para Saida que vai saber os itens com situação saida, ok???
Qualquer coisa posta ai de novo.
Abraços.....
Dankul,
Em primeiro lugar obrigado pela atenção. A resposta da primeira pergunta satisfez a necessidade. Quanto a segunda me expressei mal, ocorre o seguinte:
tem outros campos na tabela_situação que preciso dos valores para montar essa consulta, mas suponha que seja um campo de nome valor. o campo valor não repete na tabela_movimentação. A consulta deve retornar os valores da ultima posição de cada número cadastrado. Vamos supor que eu deseje retornar uma consulta com todos os números que esteja na posição saÃda. Conforme a descrição da tabela acima a consulta teria que me retornar o seguinte resultado.
número valor posição
3 100,00 saida (Conforme demonstrado a ultima posição do 3 é saÃda ignorando a saÃda inicial) ( Outro detalhe é que na tabela_movimentaçã o campo código é sequencial e não como está descrito, ou seja a última posição teria que ser código 5)
Vamos supor que eu deseje retornar uma consulta com todos os números que esteja na posição entrada. Conforme a descrição da tabela acima a consulta teria que me retornar o seguinte resultado.
número valor posição
2 150,00 entrada
Bem espero ter sido mais claro dessa vez e se puder me ajudar nessa empreitada ficarei grato.
Um Abraço
Até mais
Em primeiro lugar obrigado pela atenção. A resposta da primeira pergunta satisfez a necessidade. Quanto a segunda me expressei mal, ocorre o seguinte:
tem outros campos na tabela_situação que preciso dos valores para montar essa consulta, mas suponha que seja um campo de nome valor. o campo valor não repete na tabela_movimentação. A consulta deve retornar os valores da ultima posição de cada número cadastrado. Vamos supor que eu deseje retornar uma consulta com todos os números que esteja na posição saÃda. Conforme a descrição da tabela acima a consulta teria que me retornar o seguinte resultado.
número valor posição
3 100,00 saida (Conforme demonstrado a ultima posição do 3 é saÃda ignorando a saÃda inicial) ( Outro detalhe é que na tabela_movimentaçã o campo código é sequencial e não como está descrito, ou seja a última posição teria que ser código 5)
Vamos supor que eu deseje retornar uma consulta com todos os números que esteja na posição entrada. Conforme a descrição da tabela acima a consulta teria que me retornar o seguinte resultado.
número valor posição
2 150,00 entrada
Bem espero ter sido mais claro dessa vez e se puder me ajudar nessa empreitada ficarei grato.
Um Abraço
Até mais
ARCADYUM, boa tarde.
Respondendo a sua questão 1:
Quantio a sua questão 2:
é a 2º. Resposta do tópico anterior, a única diferença foi acrescentar o campo valor:
E para você saber quais estão na posição SaÃda, mude o texto grifado para Saida, ok??
Testai e qualquer coisa poste novamente.
Respondendo a sua questão 1:
SELECT DISTINCT tabela_movimentacao.Numero, Last(tabela_movimentacao.Situacao) AS Situacao, Last(tabela_movimentacao.Valor) AS Valor
FROM tabela_movimentacao LEFT JOIN tabela_situacao ON tabela_movimentacao.Numero = tabela_situacao.Numero
GROUP BY tabela_movimentacao.Numero;
Quantio a sua questão 2:
é a 2º. Resposta do tópico anterior, a única diferença foi acrescentar o campo valor:
SELECT tabela_movimentacao.Numero, tabela_movimentacao.Situacao, tabela_movimentacao.Valor
FROM tabela_movimentacao
WHERE tabela_movimentacao.Situacao=[Ô][txt-color=#e80000]Entrada[/txt-color][Ô];
E para você saber quais estão na posição SaÃda, mude o texto grifado para Saida, ok??
Testai e qualquer coisa poste novamente.
Dankul,
Obrigado pela atenção mais uma vez. Acho que estamos chegando ao que necessito. Vou postar novamente as tabelas conforme são estruturadas e explicar novamente, pois não conseguir adaptar nenhum dos códigos que você postou: Segue relação:
TABELA_SITUACAO
CODIGO NUMERO NOME OBJETO VALOR POSICAO
1 1 TESTE TESTANDO 100 ATIVO
2 2 TESTE1 TESTANDO 200 ATIVO
3 3 TESTE2 TESTANDO 50 ATIVO
4 4 TESTE3 TESTANDO 40 ATIVO
5 5 TESTE4 TESTANDO 20 ATIVO
6 6 TESTE5 TESTANDO 10 ATIVO
TABELA_MOVIMENTACAO
CODIGO NUMERO POSICAO
1 1 ANÃLISE
2 1 SAÃDA
3 1 ENTRADA
4 2 ANÃLISE
5 2 SAÃDA
6 2 ENTRADA
7 2 SAÃDA
8 3 ANÃLISE
9 3 SAÃDA
10 3 ENTRADA
11 4 ANÃLISE
12 4 SAÃDA
13 4 ENTRADA
14 4 SAÃDA
15 4 ENTRADA
16 5 ANÃLISE
17 5 SAÃDA
18 5 ENTRADA
19 6 ANÃLISE
20 6 SAÃDA
Nesta situação, caso eu queira uma consulta que retorne uma situação que esteja na posição de Análise a consulta deverá retornar os seguintes campos
NUMERO NOME OBJETO VALOR
1 TESTE TESTANDO 100
Nesta situação, caso eu queira uma consulta que retorne uma situação que esteja na posição de SaÃda a consulta deverá retornar os seguintes campos:
NUMERO NOME OBJETO VALOR
2 TESTE1 TESTANDO 200
6 TESTE5 TESTANDO 10
Nesta situação, caso eu queira uma consulta que retorne uma situação que esteja na posição de Entrada a consulta deverá retornar os seguintes campos:
NUMERO NOME OBJETO VALOR
3 TESTE2 TESTANDO 50
4 TESTE3 TESTANDO 40
5 TESTE4 TESTANDO 20
Bem como pode ver a consulta só utiliza as condições da Tabela_movimentação porém demonstra os dados cadastrados na Tabela_Situação
Se puder me ajudar ficarei agradecido.
Até
Obrigado pela atenção mais uma vez. Acho que estamos chegando ao que necessito. Vou postar novamente as tabelas conforme são estruturadas e explicar novamente, pois não conseguir adaptar nenhum dos códigos que você postou: Segue relação:
TABELA_SITUACAO
CODIGO NUMERO NOME OBJETO VALOR POSICAO
1 1 TESTE TESTANDO 100 ATIVO
2 2 TESTE1 TESTANDO 200 ATIVO
3 3 TESTE2 TESTANDO 50 ATIVO
4 4 TESTE3 TESTANDO 40 ATIVO
5 5 TESTE4 TESTANDO 20 ATIVO
6 6 TESTE5 TESTANDO 10 ATIVO
TABELA_MOVIMENTACAO
CODIGO NUMERO POSICAO
1 1 ANÃLISE
2 1 SAÃDA
3 1 ENTRADA
4 2 ANÃLISE
5 2 SAÃDA
6 2 ENTRADA
7 2 SAÃDA
8 3 ANÃLISE
9 3 SAÃDA
10 3 ENTRADA
11 4 ANÃLISE
12 4 SAÃDA
13 4 ENTRADA
14 4 SAÃDA
15 4 ENTRADA
16 5 ANÃLISE
17 5 SAÃDA
18 5 ENTRADA
19 6 ANÃLISE
20 6 SAÃDA
Nesta situação, caso eu queira uma consulta que retorne uma situação que esteja na posição de Análise a consulta deverá retornar os seguintes campos
NUMERO NOME OBJETO VALOR
1 TESTE TESTANDO 100
Nesta situação, caso eu queira uma consulta que retorne uma situação que esteja na posição de SaÃda a consulta deverá retornar os seguintes campos:
NUMERO NOME OBJETO VALOR
2 TESTE1 TESTANDO 200
6 TESTE5 TESTANDO 10
Nesta situação, caso eu queira uma consulta que retorne uma situação que esteja na posição de Entrada a consulta deverá retornar os seguintes campos:
NUMERO NOME OBJETO VALOR
3 TESTE2 TESTANDO 50
4 TESTE3 TESTANDO 40
5 TESTE4 TESTANDO 20
Bem como pode ver a consulta só utiliza as condições da Tabela_movimentação porém demonstra os dados cadastrados na Tabela_Situação
Se puder me ajudar ficarei agradecido.
Até
ARCADYUM, boa noite,
Voltando ao InÃcio, suge reformulação das consultas conf. Estrutra passada:
1º. Consulta - Primeira solicitação:
Registros não encontrado na tabela movimentação mas existete na tabela situação
2º. Consulta - Segunda solicitação:
Ultima movimentação de cada Número da tabela Situação na tabela Movimentação
3º. Consulta - Posição de Análise:
4º. Consulta - Posição de SaÃda:
5º. Consulta - Posição de Entrada:
Pelo que eu entendi é isto.
Qualquer coisa posta ai de novo, ok???
Voltando ao InÃcio, suge reformulação das consultas conf. Estrutra passada:
1º. Consulta - Primeira solicitação:
Registros não encontrado na tabela movimentação mas existete na tabela situação
SELECT TABELA_SITUACAO.Numero, TABELA_SITUACAO.Objeto, TABELA_SITUACAO.Valor
FROM TABELA_SITUACAO LEFT JOIN TABELA_MOVIMENTACAO ON TABELA_SITUACAO.Numero = TABELA_MOVIMENTACAO.Numero
WHERE (((TABELA_MOVIMENTACAO.Numero) Is Null));
2º. Consulta - Segunda solicitação:
Ultima movimentação de cada Número da tabela Situação na tabela Movimentação
SELECT TABELA_SITUACAO.Numero, TABELA_SITUACAO.Objeto, Last(TABELA_MOVIMENTACAO.Posicao) AS ÚltimoDePosicao, TABELA_SITUACAO.Valor, TABELA_MOVIMENTACAO.Numero
FROM TABELA_MOVIMENTACAO LEFT JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.Numero=TABELA_SITUACAO.Numero
GROUP BY TABELA_SITUACAO.Numero, TABELA_SITUACAO.Objeto, TABELA_SITUACAO.Valor, TABELA_MOVIMENTACAO.Numero;
3º. Consulta - Posição de Análise:
SELECT TABELA_SITUACAO.Numero, TABELA_SITUACAO.Nome, TABELA_SITUACAO.Objeto, TABELA_SITUACAO.Valor
FROM TABELA_MOVIMENTACAO INNER JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.Numero = TABELA_SITUACAO.Numero
WHERE (((TABELA_MOVIMENTACAO.Posicao)=[Ô]Analise[Ô]));
4º. Consulta - Posição de SaÃda:
SELECT TABELA_SITUACAO.Numero, TABELA_SITUACAO.Nome, TABELA_SITUACAO.Objeto, TABELA_SITUACAO.Valor
FROM TABELA_MOVIMENTACAO INNER JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.Numero = TABELA_SITUACAO.Numero
WHERE (((TABELA_MOVIMENTACAO.Posicao)=[Ô]Saida[Ô]));
5º. Consulta - Posição de Entrada:
SELECT TABELA_SITUACAO.Numero, TABELA_SITUACAO.Nome, TABELA_SITUACAO.Objeto, TABELA_SITUACAO.Valor
FROM TABELA_MOVIMENTACAO INNER JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.Numero = TABELA_SITUACAO.Numero
WHERE (((TABELA_MOVIMENTACAO.Posicao)=[Ô]Entrada[Ô]));
Pelo que eu entendi é isto.
Qualquer coisa posta ai de novo, ok???
Dankul,
Tentei adaptar o segundo para minha necessidade porém não deu certo. Veja o que falta no código por favor:
[Ô]SELECT TABELA_SITUACAO.NUMERO, TABELA_SITUACAO.NOME, TABELA_SITUACAO.OBJETO, TABELA_SITUACAO.VALOR, LAST(TABELA_MOVIMENTACAO.POSICAO) AS ÚltimoDePosicao, TABELA_MOVIMENTACAO.NUMERO [Ô] & _
[Ô]FROM TABELA_MOVIMENTACAO LEFT JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.NUMERO = TABELA_SITUACAO.NUMERO [Ô] & _
[Ô]GROUP BY TABELA_SITUACAO.NUMERO , TABELA_SITUACAO.NOME, TABELA_SITUACAO.OBJETO, TABELA_SITUACAO.VALOR, TABELA_MOVIMENTACAO.NUMERO HAVING ÚltimoDePosicao =[ô][Ô] & COMPARADOR & [Ô][ô][Ô]
Entenda COMPARADOR como uma variável passada como referência. O código original funciona, ou seja, busca sempre a última posição de cada número, porém, tem como filtrar essa consulta conforme o critério da variável , se sim , como seria?
Aguardando respostas
Arcadyum
Tentei adaptar o segundo para minha necessidade porém não deu certo. Veja o que falta no código por favor:
[Ô]SELECT TABELA_SITUACAO.NUMERO, TABELA_SITUACAO.NOME, TABELA_SITUACAO.OBJETO, TABELA_SITUACAO.VALOR, LAST(TABELA_MOVIMENTACAO.POSICAO) AS ÚltimoDePosicao, TABELA_MOVIMENTACAO.NUMERO [Ô] & _
[Ô]FROM TABELA_MOVIMENTACAO LEFT JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.NUMERO = TABELA_SITUACAO.NUMERO [Ô] & _
[Ô]GROUP BY TABELA_SITUACAO.NUMERO , TABELA_SITUACAO.NOME, TABELA_SITUACAO.OBJETO, TABELA_SITUACAO.VALOR, TABELA_MOVIMENTACAO.NUMERO HAVING ÚltimoDePosicao =[ô][Ô] & COMPARADOR & [Ô][ô][Ô]
Entenda COMPARADOR como uma variável passada como referência. O código original funciona, ou seja, busca sempre a última posição de cada número, porém, tem como filtrar essa consulta conforme o critério da variável , se sim , como seria?
Aguardando respostas
Arcadyum
ARCADYUM, bom dia.
Coloque o HAVING antes do GROUP BY e se a variável COMPARADOR for dio tipo texto coloque sempre aspas simples:
Veja ai se vai funcionar, ok??
Coloque o HAVING antes do GROUP BY e se a variável COMPARADOR for dio tipo texto coloque sempre aspas simples:
[Ô]SELECT TABELA_SITUACAO.NUMERO, TABELA_SITUACAO.NOME, TABELA_SITUACAO.OBJETO, TABELA_SITUACAO.VALOR, LAST(TABELA_MOVIMENTACAO.POSICAO) AS ÚltimoDePosicao, TABELA_MOVIMENTACAO.NUMERO [Ô] & _
[Ô]FROM TABELA_MOVIMENTACAO LEFT JOIN TABELA_SITUACAO ON TABELA_MOVIMENTACAO.NUMERO = TABELA_SITUACAO.NUMERO [Ô] & _
[Ô]HAVING ÚltimoDePosicao = [ô][Ô] & COMPARADOR & [Ô][ô][Ô] & _
[Ô]GROUP BY TABELA_SITUACAO.NUMERO , TABELA_SITUACAO.NOME, TABELA_SITUACAO.OBJETO, TABELA_SITUACAO.VALOR, TABELA_MOVIMENTACAO.NUMERO[Ô]
Veja ai se vai funcionar, ok??
Dankul,
Obrigado pela atenção e pelo seu tempo. Espero um dia poder ajudar assim como você. A consulta funcionou como esperado. Vou encerrar o tópico, mas fica meus sinceros agradecimentos.
Um Abraço e até a próxima.
Arcadyum.
Obrigado pela atenção e pelo seu tempo. Espero um dia poder ajudar assim como você. A consulta funcionou como esperado. Vou encerrar o tópico, mas fica meus sinceros agradecimentos.
Um Abraço e até a próxima.
Arcadyum.
Tópico encerrado , respostas não são mais permitidas