Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos.. Até que enfim o site voltou ao ar rs...
Seguinte.. Estou precisando fazer o seguinte:
Tenho um SELECT que está funcionando da seguinte forma:
E a coluna CD_STATUS da tabela TRAMITES, eu preciso que ele mostre sempre o MAX dela em um SELECT.
Vou tentar ser mais claro:
Tenho uma tabela (SA) que grava uma solicitacao de atendimento.
E tenho uma outra tabela (TRAMITES) que eu cadastro os tramites de uma solicitacao.
Ex:
Usuário X cadastrou uma Solicitação de Atendimento nº 100
Aí o usuário Y cadastrou um TRAMITE na solicitação nº 100.
Tenho o seguinte SELECT, que eu faço para juntar alguns dados e "esplodir" na tela:
SELECT
tramites.cd_status, sa.cd_solicitacao, sa.cd_usuario, usuarios.nome, sa.email, sa.cd_departamento, departamento.desc_departamento, sa.ramal, sa.cd_tipo, sa.solicitacao, tiposa.desc_tipo,
DAY(sa.dt_cadastro) AS dia,
DAYNAME(sa.dt_cadastro) AS semana,
MONTH(sa.dt_cadastro) AS mes,
YEAR(sa.dt_cadastro) AS ano,
DATE_FORMAT(sa.dt_cadastro,'%H:%i:%s') AS hora
FROM Sa JOIN usuarios JOIN tiposa JOIN departamento JOIN tramites
WHERE sa.cd_status NOT IN ('8', '9')
AND sa.cd_usuario = usuarios.cd_usuario
AND sa.cd_tipo = tiposa.cd_tipo
AND sa.cd_departamento = departamento.cd_departamento
GROUP BY cd_solicitacao
E o que eu preciso é que nesta primeira coluna (tramites.cd_status) da tabela tramites, mostre sempre o MAX(cd_status) da tabela tramites.
Entenderam? Creio que não seja difícil... Abraço a todos!
Olá Motta, obrigado pelo empenho em ajudar mono..
Não consegui... Veja bem, eu não quero o retorno de apenas um item.
Eu quero o retorno de TODOS os itens da tabela SA, com o MAX da coluna CD_STATUS da tabela TRAMITES em cada linha (retorno)... Entendeu?
Estou num tablet , amanhã tento responder.
tente isto ...
SELECT tramites.cd_status, sa.cd_solicitacao, sa.cd_usuario, usuarios.nome, sa.email, sa.cd_departamento, departamento.desc_departamento, sa.ramal, sa.cd_tipo, sa.solicitacao, tiposa.desc_tipo,
DAY(sa.dt_cadastro) AS dia,
DAYNAME(sa.dt_cadastro) AS semana,
MONTH(sa.dt_cadastro) AS mes,
YEAR(sa.dt_cadastro) AS ano,
DATE_FORMAT(sa.dt_cadastro,'%H:%i:%s') AS hora
FROM sa , usuarios , tiposa , departamento , tramites
WHERE sa.cd_status NOT IN ('8', '9')
AND sa.cd_usuario = usuarios.cd_usuario
AND sa.cd_tipo = tiposa.cd_tipo
AND sa.cd_departamento = departamento.cd_departamento
And tramites.cd_status = (select max(tramites2.cd_status)
from tramites tramites2
where tramites2.cd_usuario =tramites2.cd_usuario)
GROUP BY cd_solicitacaoNão deu certo! Retornou a coluna tramites.cd_status, todas as linhas com o valor 4.
Vou enviar a estrutura do meu DB para tentar facilitar ok...
TABELA TRAMITES
create table `tramites` (
`cd_tramite` double ,
`cd_solicitacao` double ,
`cd_status` double ,
`cd_usuario` double ,
`desc_tramite` blob ,
`situacao` varchar (3),
`dt_cadastro` timestamp
);
insert into `tramites` (`cd_tramite`, `cd_solicitacao`, `cd_status`, `cd_usuario`, `desc_tramite`, `situacao`, `dt_cadastro`) values('1','3','2','2','Em análise.','1','2014-07-24 20:56:28');
TABELA SA
create table `sa` (
`cd_solicitacao` double ,
`cd_usuario` double ,
`email` varchar (90),
`cd_departamento` double ,
`ramal` Decimal (12),
`cd_tipo` double ,
`solicitacao` varchar (3000),
`cd_status` double ,
`dt_cadastro` timestamp
);
insert into `sa` (`cd_solicitacao`, `cd_usuario`, `email`, `cd_departamento`, `ramal`, `cd_tipo`, `solicitacao`, `cd_status`, `dt_cadastro`) values('3','3','teste@teste.com.br','2','6353','4','Texto teste 01.......','4','2014-07-27 21:32:15');Qual a coluna de tramites que se quer o valor máximo ?
cd_status
Em cada linha.. A coluna que vai realizar o vínculo é a cd_solicitacao.
...
And tramites.cd_status = (select max(tramites2.cd_status)
from tramites tramites2
where tramites2.cd_usuario =tramites.cd_usuario)
GROUP BY cd_solicitacao
Tinha um erro no subselect.
Motta, tentei desta forma (que foi como entendi):
SELECT tramites.cd_status, sa.cd_solicitacao, sa.cd_usuario, usuarios.nome, sa.email, sa.cd_departamento, departamento.desc_departamento, sa.ramal, sa.cd_tipo, sa.solicitacao, tiposa.desc_tipo,
DAY(sa.dt_cadastro) AS dia,
DAYNAME(sa.dt_cadastro) AS semana,
MONTH(sa.dt_cadastro) AS mes,
YEAR(sa.dt_cadastro) AS ano,
DATE_FORMAT(sa.dt_cadastro,'%H:%i:%s') AS hora
FROM sa , usuarios , tiposa , departamento , tramites
WHERE sa.cd_status NOT IN ('8', '9')
AND sa.cd_usuario = usuarios.cd_usuario
AND sa.cd_tipo = tiposa.cd_tipo
AND sa.cd_departamento = departamento.cd_departamento
And tramites.cd_status = (select max(tramites2.cd_status)
from tramites tramites2
where tramites2.cd_usuario =tramites2.cd_usuario)
And tramites.cd_status = (select max(tramites2.cd_status) from tramites tramites2 where tramites2.cd_usuario =tramites.cd_usuario)
GROUP BY cd_solicitacao
Porém não está retornando certo. A coluna retorna todas as linhas com o cód 10
Mas não se quer o maior cd_status ?!
Sim, só que DE CADA LINHA..... E algumas nem terá retorno, será null... Entende?
Não, publica um exemplo simples de como sai e de como deve sair.
http://forum.imasters.com.br/topic/500259-select-com-max-com-valores-diferentes/
http://forum.imasters.com.br/topic/512214-selecionando-item-max/
Subselect com MAX, ajudou ?