Array
(
)

Ajuda em SQL

Wanderson Queiroz
   - 21 nov 2009

Bom dia pessoal, Estou com problema com a query abaixo:   select historicoenvelope.codmovimento, envelope.codenvelope, funcionario.nome,
setor.nome, historicoenvelope.data, historicoenvelope.hora from
historicoenvelope, envelope, funcionario, setor
where setor.codsetor = historicoenvelope.codsetor and
funcionario.codfuncionario = historicoenvelope.codfuncionario and
envelope.codenvelope = historicoenvelope.codenvelope
order by historicoenvelope.codmovimento   Então pessoal, eu gostaria de fazer a pesquisa para selecionar somente os dois registros marcados com a seta vermelha, ou seja, somente os registros onde o codmocimento for o maior de cada codenvelope. Abraços,   Wanderson Ramos

Adriano Silva
   - 27 nov 2009

Só uma pergunta...

O nome da pessoa que vai aparecer será sempre o mesmo quando o "codEnvelope" for igual?
Se for igual é simples basta você usar um max e group by.

Exemplo:

SELECT max(codMovimento), codEnvelope, Nome
FROM tabela
GROUP BY codEnvelope, Nome

Boa diversão...

Abraço...

0
|
0

Wanderson Queiroz
   - 28 nov 2009

Correto, Adriano   Quando o "codEnvelope" for igual o nome da pessoas será sempre o mesmo. Só que eu tenho a movimentação do envelope "codmovimento", onde eu preciso buscar somente o maior movimento (ou seja, o maior "codmovimento"). Fiz assim, mas dá erro!   select max(historicoenvelope.codmovimento), envelope.codenvelope, funcionario.nome,
setor.nome, historicoenvelope.data, historicoenvelope.hora from
historicoenvelope, envelope, funcionario, setor
where setor.codsetor = historicoenvelope.codsetor and
funcionario.codfuncionario = historicoenvelope.codfuncionario and
envelope.codenvelope = historicoenvelope.codenvelope
group by historicoenvelope.codmovimento, envelope.codenvelope   Se você puder dar uma olhada e me ajudar, ficarei muito grato.   Abraços,   Wanderson Ramos Queiroz Buritizeiro Minas Gerais Brasil

0
|
0

Bruno Batista
   - 03 dez 2009

Bom dia,

verifica se assim funcionará.

select h.codmovimento,
       e.codenvelope,
       f.nome,
       s.nome,
       h.data,
       h.hora
  from historicoenvelope h,
       envelope e,
       funcionario f,
       setor s
 where s.codsetor = h.codsetor
   and f.codfuncionario = h.codfuncionario
   and e.codenvelope = h.codenvelope
   and (h.codmovimento,e.codenvelope) in (select max(h1.codmovimento),
                                                 h1.codenvelope
                                            from historicoenvelope h1
                                           group by h1.codenvelope)
group by h.codmovimento,
         e.codenvelope

Atenciosamente,

Bruno Moreira Batista.

0
|
0

Wanderson Queiroz
   - 08 dez 2009

Bruno,

Valeu pela ajuda, mas está dando o seguinte erro:

Error: *** IBPP::SQLException ***
Context: Statement::Prepare( select h.codmovimento,
      e.codenvelope,
      f.nome,
      s.nome,
      h.data,
      h.hora
  from historicoenvelope h,
      envelope e,
      funcionario f,
      setor s
where s.codsetor = h.codsetor
  and f.codfuncionario = h.codfuncionario
  and e.codenvelope = h.codenvelope
  and (h.codmovimento, e.codenvelope) in (select max(h1.codmovimento),
                                                h1.codenvelope
                                            from historicoenvelope h1
                                          group by h1.codenvelope)
group by h.codmovimento,
        e.codenvelope )
Message: isc_dsql_prepare failed

SQL Message : -104
Invalid token

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 14, column 23

0
|
0

Emerson
   - 18 dez 2009

tente assim:

select
  he.codmovimento,
  e.codenvelope,
  f.nome Funcionario,
  s.nome Setor,
  he.data,
  he.hora
from
  historicoenvelope he
inner join
  envelope e on e.codenvelope = he.codenvelope
inner join
  funcionario f on f.codfuncionario = he.codfuncionario
inner join
  setor s on s.codsetor = he.codsetor
where
  he.codmovimento = (select max(h1.codmovimento)
                     from historicoenvelope h1
                     where h1.codenvelope = he.codenvelope)

0
|
0

Wanderson Queiroz
   - 18 dez 2009

Emerson

Boa noite,

VOCÊ É O CARA!!! Funcionou perfeitamente. Era isso que eu precisava.

V A L E U  P E L A  A J U D A !


Abraços,


Wanderson Ramos Queiroz
Buritizeiro - MG
Brasil

0
|
0