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 />"; } |
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
Obrigado Leandro.
Pessoal, fica a dica!
Tenho que guardar este código aqui nos meus ‘snipets’ já que eu fazia com 2 queries
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???
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