PHP-MySQL: Select dentro de outro select

Vamos a mais um post, galera!

Não sei se o título do post ficou claro, mas vamos lá.

Idéia de utilização:
Tenho 2 tabelas: Categorias e Produtos. A tabela Produtos salva o id da categoria correspondente ao produto.

Na hora de listar os produtos gostaria de exibir a descrição da categoria e não o id.

Tabelas:
Categorias {id, descricao}

Produtos {id, descricao, id_categoria}

Exemplo:

$select = mysql_query("SELECT prod.id, prod.descricao,
(SELECT cat.descricao FROM categorias cat WHERE cat.id = prod.id_categoria) descr_categ
FROM produtos prod 
ORDER BY 1");
 
while($row = mysql_fetch_array($select)){
  echo "$row['descr_categ'].<br />";
}

5 comentários em “PHP-MySQL: Select dentro de outro select

  • 24 de outubro de 2012 em 8:04
    Permalink

    Uma forma mais eficiente de fazer essa é com join:
    SELECT prod.id, prod.descricao,cat.descricao descr_categ
    FROM produtos
    JOIN categorias cat ON prod cat.id = prod.id_categoria
    ORDER BY 1

    Resposta
  • 25 de outubro de 2012 em 21:46
    Permalink

    Tenho que guardar este código aqui nos meus ‘snipets’ já que eu fazia com 2 queries

    Resposta
  • 23 de dezembro de 2012 em 1:50
    Permalink

    amigo, boa noite, muito bom sua dica, mais eis que me surgiu mais uma dúvida, tenho duas tabelas.
    albuns{id, nome}
    fotos(id, id_album, fotos},

    quero fazer o select duplo, e recuperar o nome do album e a contagem da quantas fotos tem o album de acordo com id do album.
    poderia me ajudar???

    Resposta
    • 13 de janeiro de 2013 em 10:13
      Permalink

      Fala Matteus,

      segue um exemplo para te ajudar.

      SELECT a.nome, count(*) as total FROM albuns a, fotos f
      WHERE a.id = f.id_album
      GROUP BY 1

      Resposta

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *