Contar itens de uma tabela e dispensar os detalhes
amigos tenho uma bronca e nao estou conseguindo resolver e o seguinte tenho uma tabela mestre e outra detalhe porem faço uma pesquisa mas quero um count apenas da tabela mestre
ex: select count(quant) from mestre
inner join detalhe on (....)......
porem na minha tabela mestre tenho 5 registros e na detalhe tenho 50 então o meu count vai me retiornar 50 e quero epnas os 5...
help....
ex: select count(quant) from mestre
inner join detalhe on (....)......
porem na minha tabela mestre tenho 5 registros e na detalhe tenho 50 então o meu count vai me retiornar 50 e quero epnas os 5...
help....
Sremulador
Curtidas 0
Respostas
Thomaz_prg
14/04/2006
vc quer o COUNT ou o SUM ???
Pq se for o COUNT, isto é, ver quantos registros tem na tabela pai seria apenas:
SELECT COUNT(*) FROM TABELAPAI WHERE <SUA CLAUSULA>
Pq se for o COUNT, isto é, ver quantos registros tem na tabela pai seria apenas:
SELECT COUNT(*) FROM TABELAPAI WHERE <SUA CLAUSULA>
GOSTEI 0
Sremulador
14/04/2006
o grande problema e que tenho que exibir a soma dos itens ...
GOSTEI 0
Thomaz_prg
14/04/2006
Veja se é isso que você quer:
select M.NUM_PEDIDO, SUM(I.QTD) from PEDIDOS M, ITENS I WHERE I.NUM_PEDIDO = M.NUM_PEDIDO GROUP BY 1
GOSTEI 0
Sremulador
14/04/2006
quase isso, porem vai dar o mesmo total, pois na pesquisa vai ser listato a junção dos dois, neste seu caso se eu tenho 10 itens e 5 pedidos ele vai me retornar 10 para os dois mas eu quero e 5 e 10...
GOSTEI 0
Thomaz_prg
14/04/2006
Agora acho que entendi o que vc quer....
tente assim:
tente assim:
SELECT P.NUM_PEDIDO, (select SUM(I.QTD) from ITENS I where I.NUM_PEDIDO=P.NUM_PEDIDO) FROM PEDIDOS P
GOSTEI 0
Sremulador
14/04/2006
estamos quase lá, so que tem tem um pequeno detalhe, estou utilizando com um agrupamento então desta maneira o total de pedidos (no caso) sóvai sair em uma das colunas ex:
Resultado
Item Quan
1 0
2 10
3 0.....
sendo que para os itens 1 e 3 tenho quantidades...
entendeu, será que tem solução...
SELECT P.NUM_PEDIDO, (select SUM(I.QTD) from ITENS I where I.NUM_PEDIDO=P.NUM_PEDIDO) FROM PEDIDOS P group by PEDIDOS
Resultado
Item Quan
1 0
2 10
3 0.....
sendo que para os itens 1 e 3 tenho quantidades...
entendeu, será que tem solução...
GOSTEI 0
Thomaz_prg
14/04/2006
Amigo, apenas uma pergunta simples..... porque o uso do group by???
Se você não tiver outra função agregada não precisa usá-lo. Uma simples ordenação creio que seria o suficiente. Experimente sem o GroupBy e veja o resultado.
Se você não tiver outra função agregada não precisa usá-lo. Uma simples ordenação creio que seria o suficiente. Experimente sem o GroupBy e veja o resultado.
GOSTEI 0
Sremulador
14/04/2006
bem porque em alguns casos os mestres não tem detalhes e quero que mostre mesmo os que não tiverem para o casa da minha tabela aqui e tem que me mostrar os mestres tendo ou não detalhes...
GOSTEI 0
Thomaz_prg
14/04/2006
Bom, o select que eu tinha colocado irá mostrar todos os ´mestres´, mesmo os que não tem ´detalhes´. O caso é que estaria aparecendo NULL. Se for para aparecer o 0 (zero) ao invés do NULL, basta usar coalesce, dessa forma:
Se não for isso ainda, faça o seguinte, mostre a estrutura destas 2 tabelas.
SELECT P.NUM_PEDIDO, COALOESCE( (select SUM(I.QTD) from ITENS I where I.NUM_PEDIDO=P.NUM_PEDIDO) , 0 ) AS QTD FROM PEDIDOS P group by PEDIDOS
Se não for isso ainda, faça o seguinte, mostre a estrutura destas 2 tabelas.
GOSTEI 0
Sremulador
14/04/2006
SELECT CCDS, SUM(I.INDA - I.INDI) * 100, (SELECT COUNT(L.LTEN) FROM LEITOS L WHERE L.LTEN=I.INEN) FROM INTERNACAO I
INNER JOIN LEITOS ON (LTLT=I.INLT AND LTEN=I.INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
WHERE INDI BETWEEN ´05/01/06´ AND ´05/31/06´ AND INDA IS NOT NULL
GROUP BY CCDS
esta dando erro, dizendo que falta agrupar alguma coisa, mas agora oque ?
GOSTEI 0
Cabelo
14/04/2006
colega tente assim:
SELECT CCDS, SUM(I.INDA - I.INDI) * 100, (SELECT COUNT(L.LTEN) as D_SUM FROM LEITOS L WHERE L.LTEN=I.INEN) FROM INTERNACAO I
INNER JOIN LEITOS ON (LTLT=I.INLT AND LTEN=I.INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
WHERE INDI BETWEEN ´05/01/06´ AND ´05/31/06´ AND INDA IS NOT NULL
GROUP BY CCDS, D_SUM
acredito que deva resolver seu problema..
SELECT CCDS, SUM(I.INDA - I.INDI) * 100, (SELECT COUNT(L.LTEN) as D_SUM FROM LEITOS L WHERE L.LTEN=I.INEN) FROM INTERNACAO I
INNER JOIN LEITOS ON (LTLT=I.INLT AND LTEN=I.INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
WHERE INDI BETWEEN ´05/01/06´ AND ´05/31/06´ AND INDA IS NOT NULL
GROUP BY CCDS, D_SUM
acredito que deva resolver seu problema..
GOSTEI 0
Sremulador
14/04/2006
assim não funcionou tb...
GOSTEI 0
Cabelo
14/04/2006
Colega...
Você deve refernciar os campos com as tabelas na frente...
Altere seu sql e execute o select... acredito que o problemas esteja resolvido...
Você deve refernciar os campos com as tabelas na frente...
Altere seu sql e execute o select... acredito que o problemas esteja resolvido...
GOSTEI 0
Sremulador
14/04/2006
amigo o problema consiste quando eu coloco o where no sub-select quando eu retiro funciona beleza...
GOSTEI 0