[firebase-br] Select com group by

Sandro Souza escovadordebits em gmail.com
Qua Maio 27 17:31:38 -03 2009


Bom dia/tarde Marcelo.

Grande Marcelo, só coloquei esse X como um alias para esse SELECT mais
interno, pois alguns bancos de dados reclamam se não colocarmos.

Fico feliz em ter te ajudado. :D

2009/5/27 Marcelo Moreira <marcelomoreira.souza em gmail.com>

> Sandro,
>
> Agora sim funcionou corretamente cara.
> Putz ja tava ficando loco com isso.
>
> Sou uma coisa, veja este pedaco do codigo que voce escreveu:
>
> (FO.DATA = CURRENT_DATE))) X
>
> Este X ai eu nao entendi, mesmo sem ele funciona corretamente.
> Qual a finalidade dele.
>
> Brigadao cara.
>
> Abraços.
>
>
> Em 27/05/09, Sandro Souza <escovadordebits em gmail.com> escreveu:
>>
>> Bom dia/tarde Marcelo.
>>
>> Grande Marcelo, então vamos alterar a lógica da consulta.
>>
>> Tente o seguinte código:
>>
>> SELECT
>>   COUNT(*),
>>   DESCRICAO
>> FROM (
>>   SELECT
>>     FS.DESCRICAO
>>   FROM
>>     FOLLOWUP_STATUS FS,
>>     FOLLOWUP F
>>   WHERE
>>     (F.ID_FOLLOWUP_STATUS = FS.ID_FOLLOWUP_STATUS)AND
>>     EXISTS(
>>       SELECT
>>         FO.ID_FOLLOWUP
>>       FROM
>>         FOLLOWUP_OCORRENCIA FO
>>             WHERE
>>         (FO.ID_FOLLOWUP = F.ID_FOLLOWUP)AND
>>         (FO.DATA = CURRENT_DATE))) X
>> GROUP BY
>>   DESCRICAO
>>
>> Espero ter ajudado mais que atrapalhado. :D
>>
>> 2009/5/27 Marcelo Moreira <marcelomoreira.souza em gmail.com>
>>
>>> Sandro,
>>> Brigado pela atenção cara!
>>>
>>> Mas seu exemplo tambem nao funcionou e esta retornando mais registros do
>>> que deveria.
>>> Como voce disse na tabela FOLLOWUP_STATUS eu tenho apenas dois registros
>>> 1 - PENDENTE
>>> 2 - CONCLUIDO
>>> O fato é que agora todos os registros da tabela FOLLOWUP tem
>>> ID_FOLLOWUP_STATUS = 1
>>> ou seja todos esta pendentes.
>>> O resultado que eu preciso ter é:
>>>
>>> COUNT = 5
>>> DESCRICAO = 'PENDENTE'
>>>
>>> pois na tabela FOLLOWUP tenho apenas 5 registros e na tabela
>>> FOLLOWUP_OCORRENCIA tenho 19 registros
>>>
>>> Esse ta dificil ... mas vamo que vamo!
>>>
>>> Abraços!
>>>
>>>
>>> Em 27/05/09, Sandro Souza <escovadordebits em gmail.com> escreveu:
>>>
>>>> Bom dia/tarde Marcelo.
>>>>
>>>> Grande Marcelo, por gentileza, teste primeiro o seguinte código:
>>>>
>>>> SELECT
>>>>   COUNT(*),
>>>>   DESCRICAO
>>>> FROM (
>>>>   SELECT
>>>>     FS.DESCRICAO
>>>>   FROM
>>>>     FOLLOWUP_OCORRENCIA FO,
>>>>     FOLLOWUP F,
>>>>     FOLLOWUP_STATUS FS
>>>>   WHERE
>>>>     (FO.DATA = CURRENT_DATE)AND
>>>>     (F.ID_FOLLOWUP = FO.ID_FOLLOWUP)AND
>>>>     (FS.ID_FOLLOWUP_STATUS = F.ID_FOLLOWUP_STATUS)) X
>>>> GROUP BY
>>>>   DESCRICAO
>>>>
>>>> Caso não retorne a quantidade esperada, pode ser que seja o produto
>>>> cartesiano entre essas 3 tabelas, já que a descrição não está na tabela
>>>> FOLLOWUP, mas sim em uma terceira tabela (FOLLOWUP_STATUS) que também pode
>>>> ter mais de um registro com o mesmo ID_FOLLOWUP.
>>>>
>>>> Por favor, poste o resultado para que possamos lhe ajudar.
>>>>
>>>> Espero ter ajudado mais que atrapalhado. :D
>>>>
>>>> 2009/5/26 Marcelo Moreira <marcelomoreira.souza em gmail.com>
>>>>
>>>>> Pessoal,
>>>>> Vejam o sql abaixo:
>>>>>
>>>>>
>>>>> select
>>>>>  count(*),
>>>>>  FS.DESCRICAO
>>>>> from
>>>>>    FOLLOWUP F
>>>>> inner join FOLLOWUP_OCORRENCIA FO on (F.ID_FOLLOWUP = FO.ID_FOLLOWUP)
>>>>> inner join FOLLOWUP_STATUS FS on (F.ID_FOLLOWUP_STATUS =
>>>>> FS.ID_FOLLOWUP_STATUS)
>>>>> where
>>>>>    FO.DATA = current_date
>>>>> group by
>>>>>    2
>>>>>
>>>>> Ele esta retornornando 19 registros quando na verdade o que eu preciso
>>>>> é que
>>>>> ele retorne apenas os 5 que tiveram ocorrencia no dia. O que acontece é
>>>>> que
>>>>> para cada registro na tabela FOLLOWUP eu posso ter mais de um registro
>>>>> relacionado na tabela FOLLOWUP_OCORRENCIA e pode ter mais de uma
>>>>> ocorrencia
>>>>> no mesmo dia para o registro da tabela FOLLOWUP.
>>>>> Como eu poderia resolver este select?
>>>>> Existe a possibilidade de encaixar um distinct(ID_FOLLOWUP) ou algo do
>>>>> tipo
>>>>> neste select?
>>>>>
>>>>> Obrigado pela atenção.
>>>>>
>>>>>
>>>>>
>>>>> Marcelo
>>>>> ______________________________________________
>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>
>>>>
>>>>
>>>
>>
>



Mais detalhes sobre a lista de discussão lista