dilonghi Postado Março 4, 2010 Denunciar Share Postado Março 4, 2010 vi muitos post desse assunto, mas estou com dificuldade, pois meu modelo é um pouco diferente.Tenho duas tabelas, IMOVEIS e FOTOS, sendo que na tabelas FOTOS, tenho varios registros para cada IMOVEL.Então meu problema é Listar em um Gridview os imoveis, basedo em uma busca, e mostrar junto uma unica foto.Usando INNER JOIN, ou LEFT JOIN, ele me retorna os imoveis, conforme o nº de fotos que tem no cadastro,só que preciso que este Select, me retorne uma vez o só o Imovel com Uma foto.Criei em FOTOS um campo chamado: 'principal', sendo que se este estiver marcado como true, retorna junto com os dados do IMOVEL.Segue pedaço do codigo que to usando:SqlConnection oConn = null;SqlCommand oComm;SqlDataReader oReader;string sSQL;string connStr = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;sSQL = "SELECT IMOVEIS.idimovel, IMOVEIS.tipoimovel, IMOVEIS.domitorios, IMOVEIS.endereco, IMOVEIS.bairro, IMOVEIS.valor, IMOVEIS.datacadastro, IMOVEIS.status, IMO_FOTOS.imagem FROM IMOVEIS LEFT JOIN IMO_FOTOS ON (IMOVEIS.idimovel = IMO_FOTOS.idimovel) WHERE IMO_FOTOS.principal = 1 " + QueryCodigo + QueryImovel + Querydormi + QueryPreco + QueryBairro + " ORDER BY datacadastro desc";Alguma luz nessa situação?Detalhes: ASP.NET em C# com SQL server Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 4, 2010 Denunciar Share Postado Março 4, 2010 acho q você podia fazer assim:sSQL = "SELECT IMOVEIS.idimovel, IMOVEIS.tipoimovel, IMOVEIS.domitorios, IMOVEIS.endereco, IMOVEIS.bairro, IMOVEIS.valor, IMOVEIS.datacadastro, IMOVEIS.status, Max(IMO_FOTOS.imagem) As imagem FROM IMOVEIS LEFT JOIN IMO_FOTOS ON (IMOVEIS.idimovel = IMO_FOTOS.idimovel) WHERE IMO_FOTOS.principal = 1 " + QueryCodigo + QueryImovel + Querydormi + QueryPreco + QueryBairro + " ORDER BY datacadastro desc GROUP BY IMOVEIS.idimovel, IMOVEIS.tipoimovel, IMOVEIS.domitorios, IMOVEIS.endereco, IMOVEIS.bairro, IMOVEIS.valor, IMOVEIS.datacadastro, IMOVEIS.status"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dilonghi Postado Março 4, 2010 Autor Denunciar Share Postado Março 4, 2010 Bah legal tua logica meo.. o problema é que só esta retornando os IMOVEIS que Tem principal = 1, ou seja.. que tem foto setada como principal,Porem preciso que dentro da consulta me traga os imoveis independente de ter a foto ou de estar setada como principal.O meu problema é Trazer os registros.. e Mostar 1 Foto se tiver.. e ainda priorizar se tiver setada principal = 1.. se não fica sem foto.Muito foda isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dilonghi Postado Março 4, 2010 Autor Denunciar Share Postado Março 4, 2010 Olha só pessoal, acabei resolvendo desta forma:SELECT idimovel, tipoimovel, domitorios, endereco, bairro, valor, datacadastro, status, (SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS imagem FROM IMOVEISAgora esta me retornando corretamente Uma unica foto de um Imovel, caso não tenha, meu ImageField no Gridview mostra uma imagem padrão.Agraço a todosgrande abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
dilonghi
vi muitos post desse assunto, mas estou com dificuldade, pois meu modelo é um pouco diferente.
Tenho duas tabelas, IMOVEIS e FOTOS, sendo que na tabelas FOTOS, tenho varios registros para cada IMOVEL.
Então meu problema é Listar em um Gridview os imoveis, basedo em uma busca, e mostrar junto uma unica foto.
Usando INNER JOIN, ou LEFT JOIN, ele me retorna os imoveis, conforme o nº de fotos que tem no cadastro,
só que preciso que este Select, me retorne uma vez o só o Imovel com Uma foto.
Criei em FOTOS um campo chamado: 'principal', sendo que se este estiver marcado como true, retorna junto com os dados do IMOVEL.
Segue pedaço do codigo que to usando:
SqlConnection oConn = null;
SqlCommand oComm;
SqlDataReader oReader;
string sSQL;
string connStr = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
sSQL = "SELECT IMOVEIS.idimovel, IMOVEIS.tipoimovel, IMOVEIS.domitorios, IMOVEIS.endereco, IMOVEIS.bairro, IMOVEIS.valor, IMOVEIS.datacadastro, IMOVEIS.status, IMO_FOTOS.imagem FROM IMOVEIS LEFT JOIN IMO_FOTOS ON (IMOVEIS.idimovel = IMO_FOTOS.idimovel) WHERE IMO_FOTOS.principal = 1 " + QueryCodigo + QueryImovel + Querydormi + QueryPreco + QueryBairro + " ORDER BY datacadastro desc";
Alguma luz nessa situação?
Detalhes: ASP.NET em C# com SQL server
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.