jvlsm
|
SANTA MARIA RS - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 25/05/2006 10:57 hs
Caros Colegas, Estou tentando fazer uma query para selecionar o ultimo item de entrada do estoque para eu pegar seus respectivos valores de entrada.... select max(n.idnota),i.vtot,i.qtde,i.icms from notas as n inner join notasitens as i on i.idnota = n.idnota where n.operacao = 'entrada' group by n.idnota; O problema e que a query ate esta trazendo a ultima nota, porem os dados do item vem diferente do correto.... tipo assim: idnota nome produto qtde 1 produto A 10 2 produto B 20 3 produto C 30 4 produto C 18 5 produto A 15 a query esta retornando 2 produto B 20 4 produto C 30 5 produto A 10 do produto B ate esta correto pq so tem uma nota, mas dos outros traz os demais campos (como qtde por exemplo) de uma nota anterior, traz o max(idnota) mas os demais campos vem errados, vem de notas anteriores.... desde ja agradeco pelas ajudas...
|
|
|
|
|
Postada em 25/05/2006 13:09 hs
Caro amigo vc terá que montar um recordset do max no cabeçado da nota e apartir dai recuperar os dados do item da nota , pq em um só select vc nao vai conseguir o que quer. Outra se vc que a ultima nota de cada produto o certo é fazer o max a partir da data nao do ID Agora tb outra coisa que da para faze é um select que retorne todos os produto e pesquisar qual é o ultima entrada do produto em questao Olha abri sua tabela e fiz este select select max(a.id),a.produto from teste a, teste b where a.produto=b.produto group by a.produto acessei 2 vezes a mesma tabela Espero ter ajudado
|
|
|
LCRamos
|
GOIANIA GO - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 25/05/2006 18:17 hs
Ex-fatBoy, tem razão, mas se voce quer retornar todos os registros com Inner, voce tem que especificar, tente assim: select max(n.idnota),i.vtot,i.qtde,i.icms from notas as n right join as i on notasitens.idnota = n.idnota where n.operacao = 'entrada' group by n.idnota; Substituindo o inner por right, retorna todos os registros da tabela da direita, left os da esquerda, e inner somente os registros com registro correspondente, a direita, refaça sua consulta usando o right. vlu//
|
|
|
Martini
|
PAROBÉ RS - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 26/05/2006 13:15 hs
tenta assim: create table #notas ( idnota integer, produto varchar(10), quantidade integer ) set nocount on -- 1 produto A 10 -- 2 produto B 20 -- 3 produto C 30 -- 4 produto C 18 -- 5 produto A 15 insert into #notas (idnota, produto, quantidade) values (1, 'produto A', 10) insert into #notas (idnota, produto, quantidade) values (2, 'produto B', 20) insert into #notas (idnota, produto, quantidade) values (3, 'produto C', 30) insert into #notas (idnota, produto, quantidade) values (4, 'produto C', 18) insert into #notas (idnota, produto, quantidade) values (5, 'produto A', 15) Select a.produto, a.idnota, quantidade From ( select produto, max(idnota) idnota from #notas group by produto )a inner join #notas on a.idnota = #notas.idnota drop table #notas
|
|
|
andré
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 28/05/2006 23:10 hs
tente assim select max(n.idnota),i.vtot,i.qtde,i.icms from notas as n inner join notasitens as i on i.idnota = n.idnota where n.operacao = 'entrada' group by n.idnota order by n.idnota
|
|
|
|