nobrep 0 Denunciar post Postado Agosto 4, 2008 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
ska_ska 0 Denunciar post Postado Agosto 4, 2008 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
nobrep 0 Denunciar post Postado Agosto 5, 2008 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