Ir para conteúdo

Arquivado

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

tiopirata

Consulta SQL Join

Recommended Posts

Pessoal

 

Preciso da ajuda de vcs.

 

Preciso de fazer uma consulta tipo essa:

 

SELECT U.NOMECOMPLETO, V.NOME , COUNT(*) FROM SERVICO AS T
INNER JOIN VALORES AS V ON T.STATUSSERVICO = V.ID 
INNER JOIN USUARIOS AS U ON T.EXECUTOR = U.ID
GROUP BY  V.NOME, U.NOMECOMPLETO

Lista Resultados assim:

 

NOMECOMPLETO NOME

---------------------------------------------------

 

JOAO ANTONIO Concluido 10

JOAO ANTONIO Tratando 15

JOAO ANTONIO Aberto 20

Paulo silva Concluido 5

Paulo silva Tratando 8

Paulo silva Aberto 9

 

 

 

 

Mas preciso listar os resultados de outra maneira, assim:

 

NOMECOMPLETO CONCLUIDO ABERTO TRATANDO

---------------------------------------------------------------------------------

JOAO ANTONIO 10 20 15

Paulo Silva 5 9 8

 

Alguem poderia me ajudar a fazer essa consulta???

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for SQL 2005, de uma olhada em pivot tables. Se for SQL 2000, sub select pode lhe ser util.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for SQL 2005, de uma olhada em pivot tables. Se for SQL 2000, sub select pode lhe ser util.

 

Abçs

 

É SQL 2000.

Já andei olhando sobre sub select, mas nao consegui fazer a consulta.

será q você poderia me dar mais umas dicas q como realizar essa consuta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde tiopirata,

 

Acredito que você está me devendo uma caixa de cerveja. rs...

 

select usuarios.nomecompleto,

'Concluido' = (select count(valores.nome) from valores where valores.nome = 'Concluido')

'Tratando' = (select count(valores.nome) from valores where valores.nome = 'Tratando')

'Aberto' = (select count(valores.nome) from valores where valores.nome = 'Aberto')

FROM SERVICO

INNER JOIN VALORES ON SERVICO.STATUSSERVICO = VALORES.ID

INNER JOIN USUARIOS ON SERVICO.EXECUTOR = USUARIOS.ID

GROUP BY usuarios.nomecompleto

 

Qualquer problema só postar ;]

 

[]'s

Bruno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeuu

 

O formato ficou do jeito que queria, mas as informações estao erradas..

mediante o q você me passou fiz isso:

 

select USUARIOS.NOMECOMPLETO,
'Cancelado' = (select count(valores.nome) from valores where valores.nome = 'Cancelado'),
'em_Aberto' = (select count(valores.nome) from valores where valores.nome LIKE '%em Aberto%'),
'em_Andamento' = (select count(valores.nome) from valores where valores.nome LIKE '%em Andamento%'),
'Pausado' = (select count(valores.nome) from valores where valores.nome = 'Pausado'),
'Terminado' = (select count(valores.nome) from valores where valores.nome = 'Terminado')
FROM TAREFAS
INNER JOIN VALORES ON TAREFAS.STATUSTAREFA = VALORES.ID
INNER JOIN USUARIOS ON TAREFAS.EXECUTOR = USUARIOS.ID
GROUP BY USUARIOS.NOMECOMPLETO

Será que fiz alguma coisa de errado???

 

Valeuu

 

O formato ficou do jeito que queria, mas as informações estao erradas..

mediante o q você me passou fiz isso:

 

select USUARIOS.NOMECOMPLETO,
'Cancelado' = (select count(valores.nome) from valores where valores.nome = 'Cancelado'),
'em_Aberto' = (select count(valores.nome) from valores where valores.nome LIKE '%em Aberto%'),
'em_Andamento' = (select count(valores.nome) from valores where valores.nome LIKE '%em Andamento%'),
'Pausado' = (select count(valores.nome) from valores where valores.nome = 'Pausado'),
'Terminado' = (select count(valores.nome) from valores where valores.nome = 'Terminado')
FROM TAREFAS
INNER JOIN VALORES ON TAREFAS.STATUSTAREFA = VALORES.ID
INNER JOIN USUARIOS ON TAREFAS.EXECUTOR = USUARIOS.ID
GROUP BY USUARIOS.NOMECOMPLETO

Será que fiz alguma coisa de errado???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que fiz alguma coisa de errado???

Parabéns tiopirata, pelo que estou vendo está certinho ;]

 

[]'s

Bruno

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, o resultado esta bastante errado...

ainda estou com esssa pendencia..

estou quebrando a cabeça aqui, mas ate agora nao consegui resolver...

 

esse código, teve base o codigo abaixo:

 

SELECT U.NOMECOMPLETO, V.NOME , COUNT(*) FROM SERVICO AS T
INNER JOIN VALORES AS V ON T.STATUSSERVICO = V.ID
INNER JOIN USUARIOS AS U ON T.EXECUTOR = U.ID
GROUP BY  V.NOME, U.NOMECOMPLETO

o inner join esta igual, esse acima esta ok.

 

mas o meu codigo abaixo retorna valores incorretos:

 

select USUARIOS.NOMECOMPLETO,
'Cancelado' = (select count(valores.nome) from valores where valores.nome = 'Cancelado'),
'em_Aberto' = (select count(valores.nome) from valores where valores.nome LIKE '%em Aberto%'),
'em_Andamento' = (select count(valores.nome) from valores where valores.nome LIKE '%em Andamento%'),
'Pausado' = (select count(valores.nome) from valores where valores.nome = 'Pausado'),
'Terminado' = (select count(valores.nome) from valores where valores.nome = 'Terminado')
FROM TAREFAS
INNER JOIN VALORES ON TAREFAS.STATUSTAREFA = VALORES.ID
INNER JOIN USUARIOS ON TAREFAS.EXECUTOR = USUARIOS.ID
GROUP BY USUARIOS.NOMECOMPLETO

alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, o resultado esta bastante errado...

ainda estou com esssa pendencia..

estou quebrando a cabeça aqui, mas ate agora nao consegui resolver...

 

esse código, teve base o codigo abaixo:

 

SELECT U.NOMECOMPLETO, V.NOME , COUNT(*) FROM SERVICO AS T
INNER JOIN VALORES AS V ON T.STATUSSERVICO = V.ID
INNER JOIN USUARIOS AS U ON T.EXECUTOR = U.ID
GROUP BY  V.NOME, U.NOMECOMPLETO

o inner join esta igual, esse acima esta ok.

 

mas o meu codigo abaixo retorna valores incorretos:

 

select USUARIOS.NOMECOMPLETO,
'Cancelado' = (select count(valores.nome) from valores where valores.nome = 'Cancelado'),
'em_Aberto' = (select count(valores.nome) from valores where valores.nome LIKE '%em Aberto%'),
'em_Andamento' = (select count(valores.nome) from valores where valores.nome LIKE '%em Andamento%'),
'Pausado' = (select count(valores.nome) from valores where valores.nome = 'Pausado'),
'Terminado' = (select count(valores.nome) from valores where valores.nome = 'Terminado')
FROM TAREFAS
INNER JOIN VALORES ON TAREFAS.STATUSTAREFA = VALORES.ID
INNER JOIN USUARIOS ON TAREFAS.EXECUTOR = USUARIOS.ID
GROUP BY USUARIOS.NOMECOMPLETO

alguma sugestão?

Se possivel, pediria que você colocasse aqui o que a consulta está retornando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retorna 36 registros.

 

NomeCompleto cancelado Em_aberto em_andamento pausado terminado

------------------------------------------------------------------------------------------------------------

Fulano de tal 2 1 1 1 1

sicrano de tal 2 1 1 1 1

........

 

todos assim, com os mesmos valores... ai conferindo na tab vejo q está arrado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retorna 36 registros.

 

NomeCompleto cancelado Em_aberto em_andamento pausado terminado

------------------------------------------------------------------------------------------------------------

Fulano de tal 2 1 1 1 1

sicrano de tal 2 1 1 1 1

........

 

todos assim, com os mesmos valores... ai conferindo na tab vejo q está arrado...

Boa tarde Tiopirata,

 

Cara, como eu não sei como é a estrutura e os registros que possui em sua tabela fica um pouco dificil dizer a partir daqui. Faça o seguinte: Faça um select que retorne APENAS os registros com o status "cancelado" de algum usuario. Depois é só substituir na Pivot table, e assim sucessivamente com os demais.

 

Se você puder postar uns 2 ou 3 registros de cada tabela, assim, poderemos analisar melhor para te fornecer a solução.

 

[]'s

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.