Ir para conteúdo

POWERED BY:

Arquivado

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

jawd-webdesign

Consulta em duas tabelas

Recommended Posts

Olá Pessoal! Eu não sei se este é o lugar certo para a minha dúvida....Se não for pesso que os administradores eliminem este tópico.Eu tenho um sistema de álbuns de fotos que possui as seguintes tabelas:t_albuns-codAlbum-nome-datat_fotos-codFoto-foto-album (recebe o código do campo codAlbum da tabela t_albuns)Como podemos ver um álbum pode ter várias fotos e uma foto só pode pertencer a um único álbum.Eu gostaria de saber como faço um SELECT ou loop para imprimir na tela o nome de cada álbum acompanhado da primeira foto do respectivo álbum.Obrigado a todos que responderem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer isso usando subquery! (Isso se a versão do MySQL for 4.1 ou superior)

 

Exemplo:

 

SELECT	nome,	(SELECT foto		FROM t_fotos		WHERE album = t_albuns.codAlbum		LIMIT 1) AS fotoFROM t_albuns

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eclesiastes!Obrigado pela sua resposta...Mais infelizmente não funcionou....Eu fiz um negócio aqui..rsrs Vou explica o que fiz. Mais primeiro quero mostrar minhas tabelas--------t_fotos------------codFoto foto album68 foto68.jpg 1469 foto69.jpg 1470 foto70.jpg 1471 foto71.jpg 1472 foto72.jpg 1473 foto73.jpg 1574 foto74.jpg 1575 foto75.jpg 1576 foto76.jpg 1577 foto77.jpg 1678 foto78.jpg 1679 foto79.jpg 16-------t_albuns-------------codAlbum nome data16 Outra mais novo Álbum 2007-03-16 02:04:5815 Festa da Mariana 2007-03-12 23:57:2514 Festa do Juquinha 2007-03-12 23:55:01Fiz esse sqlSELECT a.nome, a.codAlbum, MIN(f.codFoto) codFoto, f.foto FROM t_albuns a, t_fotos f WHERE a.codAlbum=f.album GROUP BY a.nome ORDER BY f.codFotoEle me retorna isso:a.nome: Festa do Juquinha | f.foto: foto72.jpg | a.codAlbum: 14 | f.codFoto: 68a.nome: Festa da Mariana | f.foto: foto73.jpg | a.codAlbum: 15 | f.codFoto: 73a.nome: Outra mais novo Álbum | f.foto: foto79.jpg | a.codAlbum: 16 | f.codFoto: 77Viram? Quase tudo certo...Ele só peca na hora de me mostrar as fotos. Ele me mostra a última do álbum 14, a primeira do álbum 15 e a última do álbum 16.Resolvi acrescentar mais outro min()SELECT a.nome, a.codAlbum, MIN(f.codFoto) codFoto, MIN(f.foto) foto FROM t_albuns a, t_fotos f WHERE a.codAlbum=f.album GROUP BY a.nome ORDER BY f.codFotoEu achava que isso iria causar um erro pois MIN(f.foto) não é um campo com o conteúdo exclusivamente numérico para ele retornar o menor valor. Pra minha surpresa ele retornou tudo certinho.a.nome: Festa do Juquinha | f.foto: foto68.jpg | a.codAlbum: 14 | f.codFoto: 68a.nome: Festa da Mariana | f.foto: foto73.jpg | a.codAlbum: 15 | f.codFoto: 73a.nome: Outra mais novo Álbum | f.foto: foto77.jpg | a.codAlbum: 16 | f.codFoto: 77Ai vocês podem me dizer "pronto você resolveu o seu problema!" mais gostaria de saber se isso é o correto a fazer? Funcionou mais pelo que li sobre MIN não deveria funcionar.Se alguém tiver outra forma de fazer isso gostaria que me ajudasse! Obrigado a todos que responderem

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.