dilonghi
04/03/2010 - 11:12
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
acho q você podia fazer assim:
CODE
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";
dilonghi
04/03/2010 - 11:34
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?
dilonghi
04/03/2010 - 13:27
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 IMOVEIS
Agora 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 todos
grande abraço