Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Select em duas tabelas


dilonghi

Pergunta

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

  • 0

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";

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...