Beraldo 864 Denunciar post Postado Fevereiro 6, 2009 Tenho duas tabelas: produtos -- id bla bla bla produtos_fotos -- id -- id_produto -- foto A tabela produtos_fotos tem mais de um registro para cada produto, pois há mais de uma foto para cada um deles. Quero montar uma página com os últimos produtos cadastrados. Para isso, quero, além dos dados do produto, uma única foto dele, apenas para uma ilustração. Creio que eu deveria fazer uma sbuquery, mas eu teria de colocar um WHERE nela. Não sei como fazer. tentei assim: SELECT q.id, q.nome, q.modalidade, q.cidade, q.uf, (SELECT thumb FROM quadras_fotos LIMIT 1) as thumb, (SELECT id_quadra FROM quadras_fotos LIMIT 1) as id_quadra FROM quadras AS q LIMIT 3 O problema é que o thumb e o id_quadra não correspondem ao ID da quadra. Como posso fazer isso sem usar duas consultas? Compartilhar este post Link para o post Compartilhar em outros sites
advaldomesquita 93 Denunciar post Postado Fevereiro 6, 2009 tenta isso: SELECT q.id , q.nome , q.modalidade , q.cidade , q.uf , (SELECT thumb FROM quadras_fotos where q.id = id LIMIT 1) as thumb, (SELECT id_quadra FROM quadras_fotos where q.id = id_quadra LIMIT 1) as id_quadra FROM quadras AS q LIMIT 3 Não entendi bem a estrutura que montou, mas iguala os id das tabelas do subselect com os da tabela externa (fora do subselect) Ve se eh isso Agora que eu li que os ids nao sao os mesmos. Poderia postar a estrutura das tabelas?! Abçs Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 6, 2009 não deu. :( É o seguinte: Recapitulando quadras: -- id bla bla bla quadras_fotos - id - id_quadra - foto Supondo que tenho isto cadastrado: quadras id 1 2 3 quadras_fotos id id_quadra foto 1 1 foto1_q1 2 1 foto2_q1 3 2 foto1_q2 4 2 foto2_q2 Quero este resultado: id_quadra ... foto 1 foto1_q1 2 foto1_q2 Compartilhar este post Link para o post Compartilhar em outros sites
advaldomesquita 93 Denunciar post Postado Fevereiro 6, 2009 create table #quadras (id int) create table #quadras_fotos (id int, id_quadra int, foto varchar(20)) insert into #quadras values (1) insert into #quadras values (2) insert into #quadras values (3) insert into #quadras_fotos values (1,1,'foto1_q1') insert into #quadras_fotos values (2,1,'foto2_q1') insert into #quadras_fotos values (3,2,'foto1_q2') insert into #quadras_fotos values (4,2,'foto2_q2') select q.id_quadra , (select top 1 foto from #quadras_fotos where id_quadra = q.id_quadra ) from #quadras_fotos q group by id_quadra drop table #quadras drop table #quadras_fotos roda isso ou isso: create table #quadras (id int) create table #quadras_fotos (id int, id_quadra int, foto varchar(20)) insert into #quadras values (1) insert into #quadras values (2) insert into #quadras values (3) insert into #quadras_fotos values (1,1,'foto1_q1') insert into #quadras_fotos values (2,1,'foto2_q1') insert into #quadras_fotos values (3,2,'foto1_q2') insert into #quadras_fotos values (4,2,'foto2_q2') select q.id , (select top 1 foto from #quadras_fotos where id_quadra = q.id) from #quadras q group by id drop table #quadras drop table #quadras_fotos Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 6, 2009 Quase... esse TOP gerou erro . Usei LIMIT mesmo Consegui assim: SELECT q.id, q.nome, ( SELECT thumb FROM quadras_fotos WHERE id_quadra = q.id LIMIT 1 ) as thumb, (SELECT id_quadra FROM quadras_fotos WHERE id_quadra = q.id LIMIT 1 ) as id_quadra FROM quadras q GROUP BY id Valeu! Pago uma gelada para você lá no boteco! :D Compartilhar este post Link para o post Compartilhar em outros sites
advaldomesquita 93 Denunciar post Postado Fevereiro 6, 2009 Esqueci que era mysql ^^ Em Mysql eh limit e em SQLServer em Top Me deve uma nao. duas. nao vem nao ^^ Boa sorte ai Abçs Compartilhar este post Link para o post Compartilhar em outros sites