[firebase-br] Group By

Marcelo Moreira marcelomoreira.souza em gmail.com
Sex Ago 16 14:29:08 -03 2013


Sandro,
No caso eu ja tinha feito como voce disse mas ainda continuo tendo como
retorno varias linhas com o mesmo ID_ATENDIMENTO

select
    AO.ID_ATENDIMENTO,
    max(AO.ID_ATENDIMENTO_OCORRENCIA),
    AO.DATA_HORA,
    AA.DESCRICAO as ASSUNTO_DESCRICAO,
    AST.DESCRICAO as STATUS_DESCRICAO,
    U.NOME as USUARIO_NOME
from ATENDIMENTO_OCORRENCIA AO
inner join ATENDIMENTO A on (AO.ID_ATENDIMENTO = A.ID_ATENDIMENTO)
inner join ATENDIMENTO_ASSUNTO AA on (A.ID_ATENDIMENTO_ASSUNTO =
AA.ID_ATENDIMENTO_ASSUNTO)
inner join ATENDIMENTO_STATUS AST on (A.ID_ATENDIMENTO_STATUS =
AST.ID_ATENDIMENTO_STATUS)
inner join USUARIO U on (AO.ID_USUARIO = U.ID_USUARIO)
WHERE A.ID_CLIENTE = 1
group by AO.ID_ATENDIMENTO, AO.DATA_HORA, AA.DESCRICAO, AST.DESCRICAO,
U.NOME
order by AO.data_hora desc


Em 16 de agosto de 2013 14:24, Sandro Souza <escovadordebits em gmail.com>escreveu:

> Bom dia/tarde/noite Marcelo.
>
> Nobre amigo, acredito que você esqueceu de colocar, na cláusula GROUP BY,
> todas as expressões da cláusula SELECT que não estão usando funções de
> agregamento (MAX, MIN, SUM, AVG).
>
> Ou seja, você colocou apenas:
>
> GROUP BY AO.ID_ATENDIMENTO
>
> Mas deveria colocar:
>
> GROUP BY AO.ID_ATENDIMENTO, AO.DATA_HORA, AA.DESCRICAO, AST.DESCRICAO,
> U.NOME
>
> Espero ter ajudado mais que atrapalhado. :D
>
> Em 16-08-2013 12:51, Marcelo Moreira escreveu:
>
>  Pessoal,
>> Alguem pode me ajudar a identificar onde esta o erro neste select.
>> Firebird
>> 2.1
>>
>> select
>>      AO.ID_ATENDIMENTO,
>>      max(AO.ID_ATENDIMENTO_**OCORRENCIA),
>>      AO.DATA_HORA,
>>      AA.DESCRICAO as ASSUNTO_DESCRICAO,
>>      AST.DESCRICAO as STATUS_DESCRICAO,
>>      U.NOME as USUARIO_NOME
>> from ATENDIMENTO_OCORRENCIA AO
>> inner join ATENDIMENTO A on (AO.ID_ATENDIMENTO = A.ID_ATENDIMENTO)
>> inner join ATENDIMENTO_ASSUNTO AA on (A.ID_ATENDIMENTO_ASSUNTO =
>> AA.ID_ATENDIMENTO_ASSUNTO)
>> inner join ATENDIMENTO_STATUS AST on (A.ID_ATENDIMENTO_STATUS =
>> AST.ID_ATENDIMENTO_STATUS)
>> inner join USUARIO U on (AO.ID_USUARIO = U.ID_USUARIO)
>> WHERE A.ID_CLIENTE = 1
>> group by AO.ID_ATENDIMENTO
>> order by AO.data_hora desc
>>
>> O que acontece é que para um registro na tabela ATENDIMENTO eu posso ter
>> varios registros relacionados na tabela ATENDIMENTO_OCORRENCIA.
>>
>> O que eu preciso fazer é agrupar pelo ID_ATENDIMENTO mas retornando sempre
>> o ultimo registro candastrado na tabela ATENDIMENTO_OCORRENCIA.
>>
>> Grato pela atenção.
>>
>>
>


-- 
Marcelo Moreira
(31) 8420-2723
E-mail / MSN: marcelomoreira.souza em hotmail.com
E-mail: marcelomoreira.souza em gmail.com
Skype: marcelomoreira.souza



Mais detalhes sobre a lista de discussão lista