[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