Problemas com função de grupo
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?
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
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
Curtidas 0
Respostas
Alex Lekao
30/12/2013
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
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
GOSTEI 0
Rafael Moreira
30/12/2013
Na realidade o que eu quero é a quantidade de itens do técnico .
fiz o seguinte, mas retornou zero(0).
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))
GOSTEI 0
Alex Lekao
30/12/2013
se vc usar desta forma traz alguma coisa?
Podemos ir tentando fazer algo.
select count(coditen) from tabela group by codtecnico
Podemos ir tentando fazer algo.
GOSTEI 0
Rafael Moreira
30/12/2013
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
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
GOSTEI 0
Alex Lekao
30/12/2013
Experimenta substituir no seu codigo onde vc esta colocando o count(*) quantidade, por este script e veja o que traz.
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.
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.
GOSTEI 0
Rafael Moreira
30/12/2013
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]
[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]
GOSTEI 0
Alex Lekao
30/12/2013
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.
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.
GOSTEI 0