[firebase-br] Select com group by

Sandro Souza escovadordebits em gmail.com
Qua Maio 27 14:39:54 -03 2009


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