Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Fazer max(id) em clausula where


Carlos Rocha

Pergunta

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

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? Tambem tentei assim, deu certo, mas ainda não consigo fazer o max(id) no fim da query.
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)

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...