Antes que se assustem com a sql, deixa eu explicar como deve funcionar:
Quero retornar um registro por trabalho contendo:
trabalhos.cod_evento,
trabalhos.cod_categoria,
trabalhos.cod_area,
trabalhos.titulo_trabalho,
trabalhos.premio_pesquisador,
trabalhos.chave_trabalho,
status_trabalhos.cod_status,
status_trabalhos.trabalho_pago,
status_trabalhos.trabalho_aprovado,
status_trabalhos.tipo_apresentacao,
status_trabalhos.observacao_trabalho,
status_trabalhos.nota_trabalho,
status_trabalhos.data_status
na tabela "status_trabalhos" os avaliadores vão inserindo novos registros relacionados ao trabalho a cada avaliação, assim mantém-se um histórico de avaliação do trabalho (usando o campo data).
O que quero é a última avaliação do trabalho, aquela que contém o status "mais" recente.
select
distinct(trabalhos.cod_trabalho),
trabalhos.cod_evento,
trabalhos.cod_categoria,
trabalhos.cod_area,
trabalhos.titulo_trabalho,
trabalhos.premio_pesquisador,
trabalhos.chave_trabalho,
status_trabalhos.cod_status,
status_trabalhos.trabalho_pago,
status_trabalhos.trabalho_aprovado,
status_trabalhos.tipo_apresentacao,
status_trabalhos.observacao_trabalho,
status_trabalhos.nota_trabalho,
status_trabalhos.data_status
from
trabalhos,
status_trabalhos
where
trabalhos.cod_trabalho=status_trabalhos.cod_trabalho
and (trabalhos.cod_area=1
or trabalhos.cod_area=47
or trabalhos.cod_area=48
or trabalhos.cod_area=49
or trabalhos.cod_area=50
or trabalhos.cod_area=51
or trabalhos.cod_area=52
or trabalhos.cod_area=54
or trabalhos.cod_area=55
or trabalhos.cod_area=56
or trabalhos.cod_area=57
or trabalhos.cod_area=58
or trabalhos.cod_area=59
or trabalhos.cod_area=60
or trabalhos.cod_area=61
or trabalhos.cod_area=62
or trabalhos.cod_area=63
or trabalhos.cod_area=64
or trabalhos.cod_area=65
or trabalhos.cod_area=66
or trabalhos.cod_area=67
or trabalhos.cod_area=68
or trabalhos.cod_area=69
or trabalhos.cod_area=70
or trabalhos.cod_area=71
or trabalhos.cod_area=72
or trabalhos.cod_area=73
or trabalhos.cod_area=16
or trabalhos.cod_area=79
or trabalhos.cod_area=80
or trabalhos.cod_area=81
or trabalhos.cod_area=74
or trabalhos.cod_area=75
or trabalhos.cod_area=76
or trabalhos.cod_area=77
or trabalhos.cod_area=78
or trabalhos.cod_area=82
or trabalhos.cod_area=46
or trabalhos.cod_area=83 )
order by(trabalhos.cod_evento
and trabalhos.cod_categoria
and trabalhos.cod_area) ASC,
status_trabalhos.nota_trabalho DESC,
status_trabalhos.data_status DESC
Pergunta
heltonritter
Antes que se assustem com a sql, deixa eu explicar como deve funcionar:
Quero retornar um registro por trabalho contendo:
trabalhos.cod_evento,
trabalhos.cod_categoria,
trabalhos.cod_area,
trabalhos.titulo_trabalho,
trabalhos.premio_pesquisador,
trabalhos.chave_trabalho,
status_trabalhos.cod_status,
status_trabalhos.trabalho_pago,
status_trabalhos.trabalho_aprovado,
status_trabalhos.tipo_apresentacao,
status_trabalhos.observacao_trabalho,
status_trabalhos.nota_trabalho,
status_trabalhos.data_status
na tabela "status_trabalhos" os avaliadores vão inserindo novos registros relacionados ao trabalho a cada avaliação, assim mantém-se um histórico de avaliação do trabalho (usando o campo data).
O que quero é a última avaliação do trabalho, aquela que contém o status "mais" recente.
Na linha:
where
trabalhos.cod_trabalho=status_trabalhos.cod_trabalho
and (trabalhos.cod_area=1
pensei em colocar uma subquery:
... trabalhos.cod_trabalho in (select cod_trabalho from status_trabalhos order by(data_status) DESC limit 0,1) ...
A princípio a lógica diz que daria certo, mas aí da um erro dizendo que o mysql nesta vesão não suporta LIMIT dentro de subquerys.
Alguma sugestão amigos?
Editando o próprio post ....
Esquecí de mostrar o resultado disso, com certeza ajuda:
15,2,18,66,"TESTE - A grande jornada da pesquisa","","45.1184940495",18,"N","S","?","Muito bem mano! Tá apresentável",5,1184941815
15,2,18,66,"TESTE - A grande jornada da pesquisa","","45.1184940495",17,"N","S","?","Muito bem mano! Tá apresentável",-1,1184940827
15,2,18,66,"TESTE - A grande jornada da pesquisa","","45.1184940495",16,"N","N","","Não avaliado nenhuma vez ainda ...",-1,1184940499
Os trabalhos não avaliados por padrão iniciam com a nota -1.
Neste caso eu queria obter o registro:
15,2,18,66,"TESTE - A grande jornada da pesquisa","","45.1184940495",18,"N","S","?","Muito bem mano! Tá apresentável",5,1184941815
obs: Hoje é dia do amigo, um grande abraço a todos!
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados