Select em duas tabelas
04/03/2010
0
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
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
Diego Longhi
Curtir tópico
+ 0
Responder
Posts
04/03/2010
Vitor Fallavena
Diego, neste caso somente uma foto por imóvel deve estar marcada como principal, isto está ocorrendo na tua base de dados ?
Responder
04/03/2010
Diego Longhi
ola acabei resolvendo com essa SQL:
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
Agradeço a Ajuda.
grande abraço
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
Agradeço a Ajuda.
grande abraço
Responder
Clique aqui para fazer login e interagir na Comunidade :)