Ajuda em SQL
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
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
Wanderson Queiroz
Curtidas 0
Respostas
Adriano Silva
21/11/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...
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...
GOSTEI 0
Wanderson Queiroz
21/11/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
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
GOSTEI 0
Bruno Batista
21/11/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.
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.
GOSTEI 0
Wanderson Queiroz
21/11/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
,
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
,
GOSTEI 0
Emerson Nascimento
21/11/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)
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)
GOSTEI 0
Wanderson Queiroz
21/11/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
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
GOSTEI 0