Olá, não estou conseguindo fazer uma consulta especifica, gostaria que se caso houver alguma revisão de determinado projeto ou seja uma revisão com o id_projeto, ao invés do código data e grd do projeto fosse exibido os da tabela revisão, porém queria que todos os projetos na mesma consulta, os que não tem revisão normal, e os que tem revisão com código data e grd alterados, no caso mostraria os dados da revisão mais recente referente aquele id_projeto.
Alguém poderia dar uma luz de como fazer esse select?
Case não funciona?
Não. É algo assim
SELECT
A, B, C,
CASE
WHEN D > 0 THEN 1
WHEN D < 0 THEN -1
ELSE 100
END AS DD
FROM
TABELA;
Consegui os projetos que não tem revisão, agora só falta os que tem revisão mostrar a ultima, depois junto as 2 consultas na jtable, o que você acha?
SELECT id_projeto, obra, tipo,subtipo,grd, data, codigo
FROM projeto
WHERE NOT EXISTS
(SELECT id_projeto FROM revisao WHERE id_projeto = projeto.id_projeto );
Oi, tentei muito antes de voltar aqui, a consulta das revisões mais recentes dos projetos, vê
select id_projeto, id_revisao, data, codigo from revisao group by id_projeto;
to dando um group by mas ele me dá o primeiro item de cada projeto e não o ultimo que seria o que eu iria precisar, se eu der um order by ele inverte todos os dados do resultado e não me dá o com maior id, já tentei dar um max(colum ) mas ai só me da o id e não o restante das colunas, algúem poderia ajudar?
Poste o que tentou com max. Exemplo:
select
id_projeto,
max(id_revisao) as id_revisao,
max(data) as data,
max(codigo) as codigo
from
revisao
group by
id_projeto;
AI ele me da todos os campos maiores, exemplo, o maior id revisao do id projeto 8 é o 15 então ele mostraria todas as colunas do id_revisao 15 e assim faria com os outros id_projeto, mas assim ele mostra o id_revisao maior que seria 15 mas ele não mostra a data do id revisão 15 que foi dia 30, mostra a data do id revisao 1 que foi dia 31 < exemplo, olha ai a consulta.
ja pensei em cada coluna dar um select where id revisao = a max(id_revisao), mas ele não reconhece essa função no where.
Entao voce nao quer agrupar. Veja se assim atende:
SELECT r.id_projeto, r.id_revisao, r.data, r.codigo, r.grd
FROM revisao r
WHERE r.data = (SELECT MAX(r2.data)
FROM revisao r2
WHERE r2.id_projeto = r.id_projeto)