Ir para conteúdo

POWERED BY:

Arquivado

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

nobrep

na consulta com UNION

Recommended Posts

Gente,

 

quero fazer uma consulta onde traga o nome do projeto, nome usuario ... e fazer a soma de horas normais e horas extras do usuario

da maneira que estou fazendo está correto, só que não quero o nome do tipo da hora e sim uma outra coluna dizendo a quantidade de horas normais e outra com a quantidade de horas extras

meu problema maior é porque pus o union para diferenciar de hora normal = 1, e hora extra =2

segue abaixo o código:

 

SELECT * FROM (

(SELECT T1.idTarefa, T2.nomeProjeto, T6.nomeUsuario, date_format(T1.dataTarefa, '%d/%m/%Y') AS dataTarefa, T7.nomeTipoAtividade, T1.atividadeTarefa, date_format(T1.inicioTarefa,'%H:%i') AS inicioTarefa, date_format(T1.fimTarefa,'%H:%i') AS fimTarefa, SEC_TO_TIME(SUM(TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa))) AS Duracao, T4.nomeTipoHora

FROM atividades T1, projetos T2, clientes T3, tipohora T4, periodos T5, usuarios T6, tipo_atividade T7 WHERE T1.idProjeto = T2.idProjeto AND T2.idCliente = T3. idCliente AND T1.idTipoHora = T4.idTipoHora AND T1.dataTarefa >= T5.inicioPeriodo AND T1.dataTarefa <= T5.fimPeriodo AND T6.idUsuario = T1.idUsuario AND T1.idTipoAtividade = T7.idTipoAtividade AND T3.idCliente = $idCliente AND T5.idPeriodo = $idPeriodo AND T4.idTipoHora = '1' GROUP BY T2.nomeProjeto, T6.nomeUsuario)

UNION (SELECT T1.idTarefa, T2.nomeProjeto, T6.nomeUsuario, date_format(T1.dataTarefa, '%d/%m/%Y') AS dataTarefa, T7.nomeTipoAtividade, T1.atividadeTarefa, date_format(T1.inicioTarefa,'%H:%i') AS inicioTarefa, date_format(T1.fimTarefa,'%H:%i') AS fimTarefa, SEC_TO_TIME(SUM(TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa))) AS Duracao, T4.nomeTipoHora FROM atividades T1, projetos T2, clientes T3, tipohora T4, periodos T5, usuarios T6, tipo_atividade T7 WHERE T1.idProjeto = T2.idProjeto AND T2.idCliente = T3. idCliente AND T1.idTipoHora = T4.idTipoHora AND T1.dataTarefa >= T5.inicioPeriodo AND T1.dataTarefa <= T5.fimPeriodo AND T6.idUsuario = T1.idUsuario AND T1.idTipoAtividade = T7.idTipoAtividade AND T3.idCliente = $idCliente AND T5.idPeriodo = $idPeriodo AND T4.idTipoHora = '2' GROUP BY T2.nomeProjeto, T6.nomeUsuario)

) TABELA ORDER BY nomeProjeto, nomeUsuario

 

 

quem puder ajudar agradeço

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi mas naum entendi.. mostra o resultado dessa query e mostra como gostaria de visualizar... fica mais facil de pensar...

 

abs,

ska

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente,

 

quero fazer uma consulta onde traga o nome do projeto, nome usuario ... e fazer a soma de horas normais e horas extras do usuario

da maneira que estou fazendo está correto, só que não quero o nome do tipo da hora e sim uma outra coluna dizendo a quantidade de horas normais e outra com a quantidade de horas extras

meu problema maior é porque pus o union para diferenciar de hora normal = 1, e hora extra =2

segue abaixo o código:

 

SELECT * FROM (

(SELECT T1.idTarefa, T2.nomeProjeto, T6.nomeUsuario, date_format(T1.dataTarefa, '%d/%m/%Y') AS dataTarefa, T7.nomeTipoAtividade, T1.atividadeTarefa, date_format(T1.inicioTarefa,'%H:%i') AS inicioTarefa, date_format(T1.fimTarefa,'%H:%i') AS fimTarefa, SEC_TO_TIME(SUM(TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa))) AS Duracao, T4.nomeTipoHora

FROM atividades T1, projetos T2, clientes T3, tipohora T4, periodos T5, usuarios T6, tipo_atividade T7 WHERE T1.idProjeto = T2.idProjeto AND T2.idCliente = T3. idCliente AND T1.idTipoHora = T4.idTipoHora AND T1.dataTarefa >= T5.inicioPeriodo AND T1.dataTarefa <= T5.fimPeriodo AND T6.idUsuario = T1.idUsuario AND T1.idTipoAtividade = T7.idTipoAtividade AND T3.idCliente = $idCliente AND T5.idPeriodo = $idPeriodo AND T4.idTipoHora = '1' GROUP BY T2.nomeProjeto, T6.nomeUsuario)

UNION (SELECT T1.idTarefa, T2.nomeProjeto, T6.nomeUsuario, date_format(T1.dataTarefa, '%d/%m/%Y') AS dataTarefa, T7.nomeTipoAtividade, T1.atividadeTarefa, date_format(T1.inicioTarefa,'%H:%i') AS inicioTarefa, date_format(T1.fimTarefa,'%H:%i') AS fimTarefa, SEC_TO_TIME(SUM(TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa))) AS Duracao, T4.nomeTipoHora FROM atividades T1, projetos T2, clientes T3, tipohora T4, periodos T5, usuarios T6, tipo_atividade T7 WHERE T1.idProjeto = T2.idProjeto AND T2.idCliente = T3. idCliente AND T1.idTipoHora = T4.idTipoHora AND T1.dataTarefa >= T5.inicioPeriodo AND T1.dataTarefa <= T5.fimPeriodo AND T6.idUsuario = T1.idUsuario AND T1.idTipoAtividade = T7.idTipoAtividade AND T3.idCliente = $idCliente AND T5.idPeriodo = $idPeriodo AND T4.idTipoHora = '2' GROUP BY T2.nomeProjeto, T6.nomeUsuario)

) TABELA ORDER BY nomeProjeto, nomeUsuario

 

 

quem puder ajudar agradeço

:)

 

NOSSO AMIGO CASSITOS ME SOLUCIONOU O PROBLEMA COM O IF, ELE CHEGOU A SEGUINTE CONSULTA:

 

SELECT

#Calcular o tempo de horas Normais

SEC_TO_TIME(SUM(IF(T1.idTipoHora = 1,TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa),0))) AS Normal,

#Calcular o tempo de horas Extras

SEC_TO_TIME(SUM(IF(T1.idTipoHora = 2,TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa),0))) AS Extra,

TIME_TO_SEC(T1.fimTarefa)-TIME_TO_SEC(T1.inicioTarefa) AS TESTE

FROM

atividades T1,

projetos T2,

clientes T3,

periodos T5,

usuarios T6,

tipo_atividade T7

WHERE

T1.idProjeto = T2.idProjeto AND

T2.idCliente = T3. idCliente AND

T1.dataTarefa >= T5.inicioPeriodo AND

T1.dataTarefa <= T5.fimPeriodo AND

T6.idUsuario = T1.idUsuario AND

T1.idTipoAtividade = T7.idTipoAtividade AND

T3.idCliente = 1 AND

T5.idPeriodo = 1

GROUP BY T2.nomeProjeto, T6.nomeUsuario

 

JÁ CONSEGUI RESOLVER MEU PROBLEMA

 

------- GRATO !!!!

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.