Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

-rafael-

JOIN - Tentando retornar o maior valor de left

Recommended Posts

ola a todos,

 

estou com um problema que ta me tirando o sono

 

estou tentando retornar a situação de determinados produtos, mas nao estou conseguindo.

 

segue as tabelas:

 


CREATE TABLE IF NOT EXISTS `produtos` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `nome` varchar(100) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

# Dumping data for table teste.produtos: ~4 rows (approximately)
/*!40000 ALTER TABLE `produtos` DISABLE KEYS */;
REPLACE INTO `produtos` (`id`, `nome`) VALUES
	(1, 'ARROZ'),
	(2, 'FEIJAO'),
	(3, 'MANDIOCA'),
	(4, 'VINAGRE');
/*!40000 ALTER TABLE `produtos` ENABLE KEYS */;


# Dumping structure for table teste.produto_mov
DROP TABLE IF EXISTS `produto_mov`;
CREATE TABLE IF NOT EXISTS `produto_mov` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `idprod` int(10) DEFAULT NULL,
 `data` date DEFAULT NULL,
 `tipo_mov` enum('INC','ENC','RET','EXC') DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `FK_produto_mov_produtos` (`idprod`),
 CONSTRAINT `FK_produto_mov_produtos` FOREIGN KEY (`idprod`) REFERENCES `produtos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

# Dumping data for table teste.produto_mov: ~2 rows (approximately)
/*!40000 ALTER TABLE `produto_mov` DISABLE KEYS */;
REPLACE INTO `produto_mov` (`id`, `idprod`, `data`, `tipo_mov`) VALUES
	(1, 1, '2010-08-13', 'INC'),
	(2, 1, '2010-08-14', 'ENC'),
	(3, 1, '2010-09-01', 'RET'),
	(4, 1, '2010-09-13', 'EXC'),
	(5, 2, '2010-08-14', 'INC'),
	(6, 2, '2010-08-29', 'ENC'),
	(7, 2, '2010-09-14', 'RET');

e a consulta que estou tentando fazer é

 


SELECT produtos.id, produtos.nome, produto_mov.id, produto_mov.idprod, produto_mov.data, produto_mov.tipo_mov 
FROM produtos 
INNER JOIN produto_mov ON produto_mov.idprod = produtos.id 
GROUP BY produtos.id 

mas ela retorna o primeiro registro da tabela produto_mov, ou seja a primeira data para cada registro de produtos.

 

mas o interessante seria que mostrasse a ultima data.

 

nao sei se fui bem claro, caso esteja faltando alguma coisa, me digam que eu posto.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT produtos.id, produtos.nome, produto_mov.id, produto_mov.idprod, produto_mov.data, produto_mov.tipo_mov 
FROM produtos 
INNER JOIN produto_mov ON produto_mov.idprod = produtos.id 
GROUP BY produtos.id
ORDER BY produto_mov.data DESC 

Creio ser isto ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola Motta,

 

não exatamente.

 

tenho os seguintes dados:

 

Imagem Postada

 

ai quando faço a consulta

 

SELECT produtos.id, produtos.nome, produto_mov.id, produto_mov.idprod, produto_mov.data, produto_mov.tipo_mov 
FROM produtos 
INNER JOIN produto_mov ON produto_mov.idprod = produtos.id 
GROUP BY produtos.id

tenho o resultado

 

Imagem Postada

 

mas gostaria que fosse o seguinte

 

Imagem Postada

 

esse é o resultado que espero.

 

com sua dica, so trocou a ordenação do resultado final.

 

obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.