Ir para conteúdo

Arquivado

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

Carcleo

max(id) no fim da cosulta

Recommended Posts

Ola pessoal.

 

Tenho 3 tabelas

1) Fornecedores
2) Produtos
3) Produtos_Lista

Bom, nessa Produtos_Lista, eu gravo os dados dos produtos que vão preencher minha lista de produtos que vou por a disposição de clientes.

 

O problema é que eu não tenho um campo fornecedor na tabela Produtos_Lista e todo produto tem um fornecedor.

 

Dai, eu queria saber, qual os nomes dos fornecedores que tem seus produtos registrados na tabela de de Produtos_lisa.

 

Outra por menor é que só me interessa a ultima lista.

 

Dai fiz a seguinte consulta que deu certo:

select
f.id as Fornecedor_id,
f.nome as Fornecedor_nome,
f.razaosocial as Fornecedor_razao 
from
fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id
where 
pl.id_lista=3

Como só preciso da última lista daí fiz assim:

select
f.id as Fornecedor_id,
f.nome as Fornecedor_nome,
f.razaosocial as Fornecedor_razao 
from
fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id
where 
pl.id_lista=max(pl.lista_id)

Só que aí, quando troquei o 7 por max(pl.lista_id), da erro de uso indevido da group função.

 

Como posso contornar esse problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Espera ai que o Motta vai resolver essa consulta pra você, o cara tem a manha!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei assim tambem, da certo, mas não consigo fazer apenas com a última lista.

select
f.id as Fornecedor_id,
f.nome as Fornecedor_nome,
f.razaosocial as Fornecedor_razao 
from
/*fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id */
produtos_lista pl  
                inner join (
                            produtos p inner join 
                                                 fornecedores f on p.fornecedor=f.id
                                                                                    ) 
                                                                                      on pl.id_produto = p.id
where 
pl.id_lista=3 (Aqui eu tenho que pegar o id da última lista

 

Consegui!

 

Ficou assim:

 

    $sql_fornecedor= "		 
             select
		   f.id as Fornecedor_id,
		   f.nome as Fornecedor_nome,
		   f.razaosocial as Fornecedor_razao,
              pl.id_lista as Lista
		  from
		   produtos_lista pl inner join (produtos p inner join fornecedores f  on p.fornecedor=f.id) on pl.id_produto = p.id
		  where 
		   pl.id_lista=(select max(pl.id_lista) from produtos_lista pl)
             GROUP by f.id			";

Grato a todos!

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.