Ola Mauricio,
Testa essa consulta e veja se te ajuda em alguma coisa
select tf.ds_reduzida,
Coalesce((select count(f.id_tipo_frequencia) frequencia f ON
f.id_tipo_frequencia = tf.id
LEFT JOIN aula a ON a.id_aula = f.id_aula where (f.id_colaborador = 21)),
0) as total
from tipo_frequencia tf
Em 19/04/07, Mauricio De Biasi <[EMAIL PROTECTED]> escreveu:
Daniel se esta correto ,
Tenho a tabela que tem todos os tipos de frequencia que é a
(tipo_frequencia), tenho a tabela frequencia que relaciona o tipo
defrequencia ao usuario e tenho a tabela aula que marca a data que foi a
aula ... e estava tentando trazer todos os tipos de frequencia mesmo
zerado
para cada colaborador. a totalização fiz dessa maneira com a propia ajuda
do
pessoal daqui :
----------------------------------------------------------------------------------------------------------------------------------------
SELECT tf.id_tipo_frequencia, tf.ds_reduzida, nm_unidade,
count(x.id_tipo_frequencia) as total,
floor((round (count(x.id_tipo_frequencia))/
round((
SELECT count(fz.id_tipo_frequencia) FROM frequencia fz
inner join aula az on fz.id_aula = az.id_aula
WHERE (az.dt_aula BETWEEN timestamp '2007-01-01' AND timestamp
'2007-01-31')
and az.id_unidade = 11
)) * 100)) as porcent, (CASE
WHEN ds_reduzida = 'P' THEN 1
WHEN ds_reduzida = 'F' THEN 2
WHEN ds_reduzida = 'SI' THEN 3
WHEN ds_reduzida = 'SE' THEN 4
WHEN ds_reduzida = 'R' THEN 5
WHEN ds_reduzida = 'FE' THEN 6
WHEN ds_reduzida = 'LMA' THEN 7
WHEN ds_reduzida = 'LME' THEN 8
ELSE 9
END) AS x
FROM tipo_frequencia tf
LEFT JOIN (SELECT f.id_tipo_frequencia, f.id_aula FROM frequencia f
RIGHT JOIN aula a on f.id_aula = a.id_aula
WHERE (a.dt_aula BETWEEN timestamp '2007-01-01' AND timestamp
'2007-01-31')
and a.id_unidade = 11 ) x
USING (id_tipo_frequencia)
left join aula au on x.id_aula = au.id_aula
left join unidade u on u.id_unidade = au.id_unidade
GROUP BY nm_unidade, tf.id_tipo_frequencia, tf.ds_reduzida
ORDER BY x;
----------------------------------------------------------------------------------------
Porem para cada colaborador isso não esta acontecendo , fiz o teste ja com
Full Join e Left , Right e nada quando jogo o id do colaborador ele so
traz
realmente o que foi sem trazer os outros tipo de frequencia zerado para
cada
colaborador não obdecendo o LEFT ou RIGHT...
>From: "Daniel Robert Costa" <[EMAIL PROTECTED]>
>Reply-To: Grupo de Usuários do PostgreSQL no
>Brasil<[email protected]>
>To: Grupo de Usuários do PostgreSQL no
>Brasil<[email protected]>
>Subject: Re: [PostgreSQL-Brasil] RIGHT OUTER JOIN
>Date: Thu, 19 Apr 2007 12:29:37 -0300
>
>Olá Mauricio.
>
>Pelo o que eu entendi, você tem 3 tabelas:
>tipo_frequencia / frequencia / aula.
>Analisando o select que você mandou, parece que nem todas as frequencias
>possuem o campo tipo_frequencia.
>E analisando a tabela aula, nem todas as aulas tem a frequencia
preenchida.
>
>Estou correto?
>Se for este o caso, você pode tentar de duas formas.
>Fazer assim:
>
>SELECT tf.ds_reduzida, COUNT(f.id_tipo_frequencia)
>FROM tipo_frequencia tf
>LEFT JOIN frequencia f ON f.id_tipo_frequencia = tf.id
>LEFT JOIN aula a ON a.id_aula = f.id_aula
>WHERE ... suas condições
>
>Ou então tentar algo mais amplo.
>Tipo:
>
>SELECT tf.ds_reduzida, COUNT(f.id_tipo_frequencia)
>FROM tipo_frequencia tf
>FULL JOIN frequencia f ON f.id_tipo_frequencia = tf.id
>FULL JOIN aula a ON a.id_aula = f.id_aula
>WHERE ... suas condições
>
>Espero ter ajudado.
>
>----- Original Message -----
>From: "Mauricio De Biasi" <[EMAIL PROTECTED]>
>To: <[email protected]>
>Sent: Thursday, April 19, 2007 12:18 PM
>Subject: Re: [PostgreSQL-Brasil] RIGHT OUTER JOIN
>
>
>Tiago,
>
>Mesmo tirando essa condição não rolou ...
>
>
> >From: "Tiago Athayde" <[EMAIL PROTECTED]>
> >Reply-To: Grupo de Usuários do PostgreSQL no
> >Brasil<[email protected]>
> >To: "Grupo de Usuários do PostgreSQL no
> >Brasil"<[email protected]>
> >Subject: Re: [PostgreSQL-Brasil] RIGHT OUTER JOIN
> >Date: Thu, 19 Apr 2007 08:42:11 -0300
> >
> >Olá Mauricio,
> >
> >Quando vc colocou essa condição f.id_colaborador = 21 ele so vai trazer
> >tipo
> >de frenquencia de quem tem frenquencia.
> >
> >
> >Em 18/04/07, Mauricio De Biasi <[EMAIL PROTECTED]> escreveu:
> >>
> >>Pesoal,
> >>
> >>estou com select relativamente simples :
> >>
> >>
> >>select tf.ds_reduzida, count(f.id_tipo_frequencia) from
tipo_frequencia
>tf
> >>RIGHT OUTER JOIN frequencia f USING (id_tipo_frequencia)
> >>left join aula a on a.id_aula = f.id_aula
> >>WHERE (a.dt_aula BETWEEN timestamp '2007-01-05' AND timestamp
> >>'2007-01-05')
> >> and a.id_unidade = 11 and f.id_colaborador = 21
> >>group by tf.ds_reduzida
> >>
> >>
> >>porem não entendo pq ele so me traz o valor de mesma chave entre as
duas
> >>tabelas ?
> >>ao invez de trazer todas as opções de tipo mesmo que não tenha na
outra
> >>tabela ?
> >>
> >>_________________________________________________________________
> >>Verifique já a segurança do seu PC com o Verificador de Segurança do
> >>Windows
> >>Live OneCare! http://onecare.live.com/site/pt-br/default.htm
> >>
> >>_______________________________________________
> >>Grupo de Usuários do PostgreSQL no Brasil
> >>Antes de perguntar consulte o manual
> >>http://pgdocptbr.sourceforge.net/
> >>
> >>Para editar suas opções ou sair da lista acesse a página da lista em:
> >>http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >>
>
>
> >_______________________________________________
> >Grupo de Usuários do PostgreSQL no Brasil
> >Antes de perguntar consulte o manual
> >http://pgdocptbr.sourceforge.net/
> >
> >Para editar suas opções ou sair da lista acesse a página da lista em:
> >http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
>_________________________________________________________________
>Descubra como mandar Torpedos SMS do seu Messenger para o celular dos
seus
>amigos. http://mobile.msn.com/
>
>_______________________________________________
>Grupo de Usuários do PostgreSQL no Brasil
>Antes de perguntar consulte o manual
>http://pgdocptbr.sourceforge.net/
>
>Para editar suas opções ou sair da lista acesse a página da lista em:
>http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
>
>
>--
>No virus found in this incoming message.
>Checked by AVG Free Edition.
>Version: 7.5.446 / Virus Database: 269.5.4/768 - Release Date: 19/4/2007
>05:32
>
>
>_______________________________________________
>Grupo de Usuários do PostgreSQL no Brasil
>Antes de perguntar consulte o manual
>http://pgdocptbr.sourceforge.net/
>
>Para editar suas opções ou sair da lista acesse a página da lista em:
>http://pgfoundry.org/mailman/listinfo/brasil-usuarios
_________________________________________________________________
Inscreva-se no novo Windows Live Mail beta e seja um dos primeiros a
testar
as novidades-grátis. Saiba mais:
http://www.ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios