Ir para conteúdo
Fórum Script Brasil
  • 0

Executar select de ultimimo registro utiizando "IF" (condição se e somente se).


Gerson Silva

Pergunta

Bom dia galera...Tudo bem...

Pessoal estou com uma duvida, já pesquisei em alguns tópicos, mas não consegui solucionar o meu problema, se alguém puder me ajudar agradeço.

Meu problema é o seguinte:

Possuo uma tabela como a do exemplo abaixo onde possuo 25 itens, esta tabela eu uso para montar uma segunda tabela, ou seja com o id_relatorio eu alimento a tabela com o id_relacao_atividade, sendo assim o id_relatorio aparece "n" vezes na tabela relacao_atividade.

Sendo assim eu necessito listar todos os ultimos registros da relacao_atividade que contenham apenas um iten id_relatorio, 'Se e somente se' atender aos seguintes requisitos:

 

id_status = '1' AND (resp_1 = '1' OR  resp_2 = '1' OR  resp_3 = '1' OR resp_4 = '1')

 

Ou seja, eu quero somente os ultimos registro de cada GROUP BY id_relatorio se e somente se atender a linha descrita acima.

 

Exemplo reduzido da minha tabela:

id_relacao_atividade - id_relatorio - id_status - resp_1 - resp_2 - resp_3 - resp_4 - numero_linha

[     1 ] - [  1  ] - [  2] [    1      ] - [    1     ] - [    0     ] - [    0      ] - [                    1 ]

[              2                  ] - [      1           ] - [       1      ] - [    1      ] - [    1     ] - [    1     ] - [    1      ] - [                    2 ]

[              3                  ] - [      2           ] - [       3      ] - [    3      ] - [    1     ] - [    0     ] - [    0      ] - [                    1 ]

[              4                  ] - [      3           ] - [       1      ] - [    3      ] - [    1     ] - [    1     ] - [    1      ] - [                    1 ]

[              5                  ] - [      3           ] - [      2       ] - [    1      ] - [    1     ] - [    1     ] - [    1      ] - [                    2 ]

 

Para que minha busca seja correta apenas os id_relacao_atividade 2 atende minha busca.

O numero_linha deve ser o máximo valor dentro do requisitos de busca assim eu garanto qeu peguei o ultimo valor dentro dos requisitos.

já tentei assim:

 

SELCT MAX(numero_linha) FROM relacao_atividade WHERE id_status = '1' AND (resp_1 = '1' OR  resp_2 = '1' OR  resp_3 = '1' OR resp_4 = '1') GROUP BY id_relatorio

 

Porem ele também me retorna valores que não são os últimos de cada id_relatorio.

Por isso minha afirmação "Se e somente se" atender meus requisitos.

Obrigado e até

 

 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Tente assim:

SELCT MAX(numero_linha) 
FROM relacao_atividade 
GROUP BY id_relatorio
HAVING id_status = '1' AND (resp_1 = '1' OR  resp_2 = '1' OR  resp_3 = '1' OR resp_4 = '1')

O filtro na cláusula HAVING é acionado APÓS o processamento do GROUP BY.

O filtro na cláusula WHERE é acionado ANTES  do processamento do GROUP BY.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...