Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

null2007

MAX de uma coluna de uma outra tabela num SELECT

Recommended Posts

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

- Então o sistema grava este registro na tabela SA.

 

Aí o usuário Y cadastrou um TRAMITE na solicitação nº 100.

- O sistema grava este registro na tabela: TRAMITES

 

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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_solicitacao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nã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');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a coluna de tramites que se quer o valor máximo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, publica um exemplo simples de como sai e de como deve sair.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.