SELECT COM RELACIONAMENTO ENTRE 2 TABELAS

MAXCIM 19/11/2012 22:07:26
#414471
Olá Amigos.

tenho duas Tabelas, Produtos e Histórico de Compras,
preciso fazer um select que traga todos os itens da tabela produtos e o valor da ultima compra na tabela de hist de Compra.

sendo Tabela produtos 1:1 e Hist de Compra (N)
idPRO ID_Mov
Codigo idpro
Descricao Vlr_Compra
DT_Mov

se alguém poder me ajudar,
desde já agradeço
F001E 19/11/2012 22:58:46
#414474
SELECT A.IDPRO,A.CODIGO,A.DESCRICAO,B.VLR_COMPRA
FROM PRODUTOS A
INNER JOIN HISTORICOCOMPRA B
ON B.IDPRO = A.IDPRO
ORDER BY B.DT_MOV DESC,A.IDPRO
MAXCIM 19/11/2012 23:02:41
#414475
Olá F001e, o ORDER BY B.DT_MOV DESC,A.IDPRO vai classificar a data, mas preciso remover( não listar) as demais datas do mesmo item.
F001E 19/11/2012 23:36:41
#414480
mas então se vc precisa trazer o valor da ultima compra...no pedido vai ter a data e a hora do pedido...por isso ordenei por data desc assim traz o ultimo pedido que foi feito...tenta usar o TOP 1

SELECT TOP 1,A.IDPRO,A.CODIGO,A.DESCRICAO,B.VLR_COMPRA
FROM PRODUTOS A
INNER JOIN HISTORICOCOMPRA B
ON B.IDPRO = A.IDPRO
ORDER BY B.DT_MOV DESC,A.IDPRO

MAXCIM 20/11/2012 10:11:13
#414487
eu preciso listar todos os itens da tabela pedido e somente a ultima compra da tabela Histórico,
um item pode ter varias compras, desejo ver somente a ultima.
F001E 20/11/2012 10:40:47
#414490
então ao invés de usar INNER usa o LEFT
OMAR2011 20/11/2012 12:12:29
#414493
Para fazer isto,você terá que criar um novo CAMPO na tabela Historico para identificar a compra.

ID_Mov
[txt-color=#e80000] IdCompra[/txt-color] é através deste Campo que irá indentificará as compras.
idpro
Vlr_Compra
DT_Mov

Exemplo:

IdMov IdCompra Idpro Vlr_Compra DT_Mov
1 001 23 16,00 20/11/2012
2 001 26 116,00 20/11/2012
3 002 14 45,00 20/11/2012
4 002 178 79,00 20/11/2012

Se não identificar a compra,pela consulta acima vai aparecer todas as compras realizado no dia.









MARCELO.TREZE 21/11/2012 09:39:46
#414513
qual é o banco de dados?
MAXCIM 21/11/2012 14:00:24
#414536
então galerinha.. estou usando o MYSQL


usado INNER JOIN ou LEFT JOIN, listou varias vezes o mesmo produto.
MARCELO.TREZE 21/11/2012 14:32:39
#414543
Vamos ver se consigo ajudar

SELECT a.*, b.*  FROM produtos a LEFT JOIN histdecompras b on a.idpro= b.idpro AND  b.dt_mov = (select TOP 1, c.dt_mov from histdecompras c where c.idpro= a.idpro) ORDER BY a.codigo DESC, b.dt_mov DESC
Tópico encerrado , respostas não são mais permitidas