Problemas com função de grupo

30/12/2013

0

Estou tentando trazer a quantidade de items que um técnico tem mas as linhas do count(*) mse repetem sem trazer o total.

Poderi dar um aajudana quary?

SELECT
     COUNT(*)Quantidade,
     item.`codigo` AS item_codigo,
     empresa.`codigo` AS empresa_codigo,
     tecnico_item.`codigo_item` AS tecnico_item_codigo_item,
     tecnico_item.`codigo_tecnico` AS tecnico_item_codigo_tecnico,
     usuario.`codigo` AS usuario_codigo,
     empresa.`nome_fantasia` AS empresa_nome_fantasia,
     item.`codigo_item` AS item_codigo_item,
     item.`criticidade` AS item_criticidade,
     item.`data_item` AS item_data_item,
     item.`descricao` AS item_descricao,
     usuario.`nome` AS usuario_nome,
     empresa.`data_fim` AS empresa_data_fim,
     empresa.`data_ini` AS empresa_data_ini
FROM
     `empresa` empresa INNER JOIN `item` item ON empresa.`codigo` = item.`codigo_empresa`
     INNER JOIN `tecnico_item` tecnico_item ON item.`codigo` = tecnico_item.`codigo_item`
     INNER JOIN `usuario` usuario ON tecnico_item.`codigo_tecnico` = usuario.`codigo`
     AND empresa.`codigo` = usuario.`codigo_empresa`
GROUP BY
     item.`codigo`,
     empresa.`codigo`,
     tecnico_item.`codigo_item`,
     tecnico_item.`codigo_tecnico`,
     usuario.`codigo`,
     empresa.`nome_fantasia`,
     item.`codigo_item`,
     item.`criticidade`,
     item.`data_item`,
     item.`descricao`,
     usuario.`nome`,
     empresa.`data_fim`,
     empresa.`data_ini`



A saída é :

1 2 1 2 12 12 Nome Fantasia Da Empresa V01 X 2013-12-16
1 3 1 3 12 12 Nome Fantasia Da Empresa V05 X 2013-12-16
1 4 1 4 12 12 Nome Fantasia Da Empresa V09 X 2013-12-16
1 5 1 5 12 12 Nome Fantasia Da Empresa V013 X 2013-12-16
1 6 1 6 12 12 Nome Fantasia Da Empresa V017 X 2013-12-16
1 7 1 7 12 12 Nome Fantasia Da Empresa V021 X 2013-12-16
1 8 1 8 12 12 Nome Fantasia Da Empresa V025 X 2013-12-16
1 9 1 9 12 12 Nome Fantasia Da Empresa V029 X 2013-12-16
1 10 1 10 12 12 Nome Fantasia Da Empresa V033 X 2013-12-16
1 11 1 11 12 12 Nome Fantasia Da Empresa V037 X 2013-12-16
1 12 1 12 12 12 Nome Fantasia Da Empresa V041 X 2013-12-16
1 13 1 13 12 12 Nome Fantasia Da Empresa V045 X 2013-12-16
1 14 1 14 12 12 Nome Fantasia Da Empresa V049 X 2013-12-16
1 15 1 15 12 12 Nome Fantasia Da Empresa V053 X 2013-12-16
Rafael Moreira

Rafael Moreira

Responder

Posts

30/12/2013

Alex Lekao

Oi Bom dia,

Desculpe mas nao entendi bem.

Ele esta contando apenas um item para cada tecnico?

Para mim o seu problema ficou um pouco vago.

Nao conheco noSQL mas tente com uma subselect para ver se funciona, na subselect na clausula where vc colocar uma igualdade de algum campo unico com a select principal, e veja se funciona.

Qqr coisa posta ai que a gente vai vendo o que consegue.

Abraco.

Alex - Lekao
Responder

30/12/2013

Rafael Moreira

Na realidade o que eu quero é a quantidade de itens do técnico .

fiz o seguinte, mas retornou zero(0).

select Count(*) Quantidade

   from item as i

   where not exists( select 1

                                      from usuario  as u

                                     where not exists( select 1 from tecnico_item ti

                                                                    where   u.codigo = ti.codigo_tecnico  and

                                                                                i.codigo = ti.codigo_item))
Responder

30/12/2013

Alex Lekao

se vc usar desta forma traz alguma coisa?

select 
   count(coditen) 
from tabela
group by codtecnico


Podemos ir tentando fazer algo.
Responder

31/12/2013

Rafael Moreira

Sim:

Select
count(codigo_item)
from tecnico_item
group by codigo_tecnico;


Saída::

Count(código item)

1
14


Tenho 15 registros ..

A tabela está assim:

2 12
3 12
4 12
5 12
6 12
7 12
8 12
9 12
10 12
11 12
12 12
13 12
14 12
15 12
2 11
Responder

02/01/2014

Alex Lekao

Experimenta substituir no seu codigo onde vc esta colocando o count(*) quantidade, por este script e veja o que traz.

select 
   count(coditen) 
from tabela
where codtecnico = codtecnico
group by codtecnico


neste where vc precisa informar as referencias da tabela deste subselect com o select de fora(principal) e vamos ver se da certo e traz os resultados que vc esta querendo.
Responder

03/01/2014

Rafael Moreira

Fiz umas modificações , acho que está faltando algo entre o item e o usuário , pois está agrupando tudo.


[code][/select x.cnt, x.codigo_tecnico, x.codigo_item, x.nome, i.descricao from
(
SELECT ti.cnt,ti.codigo_tecnico,ti.codigo_item,u.nome
FROM Usuario u
-- use LEFT JOIN if you may not have a match to get zero counts
JOIN (
SELECT codigo_tecnico,codigo_item, COUNT(*) cnt
FROM tecnico_item
GROUP BY codigo_tecnico
) ti ON ti.codigo_tecnico = u.codigo) x, Item i, usuario u2
where x.codigo_item= i.codigo
and u2.codigo = x.codigo_tecnico
[img:descricao=Imagem do resultado da query com a funcao de grupo]http://arquivo.devmedia.com.br/forum/imagem/264307-20140103-194041.png[/img]code]
Responder

04/01/2014

Alex Lekao

oi...

bom dia..

nao consegui ver a imagem que vc postou... se for possivel postar novamente...

o seu codigo que colocou agora esta meio estranho e diferente em relacao ao anterior que vc havia comecado.

essa imagem que postou eh do codigo?? poste novamente por favor para eu verificar.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar