Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
Alguma luz nessa situação?
Detalhes: ASP.NET em C# com SQL server
>
Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif SQL Server
Nao entendi porque foi movido.
Acredito que nao seja um problema de SQL SERVER, pois to fazendo meu Select no codigo .cs da página, que alimenta um Gridview por um Reader, pedaço do codigo
SqlConnection oConn = null;
SqlCommand oComm;
SqlDataReader oReader;
tring 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";Boa noite dilonghi, o bruno ta certo, com SQL você resolve seu problema.
Você pode fazer assim exemplo.
SELECT idimovel, tipoimovel, domitorios, endereco, bairro, valor, datacadastro, status, (SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS FotoVê ai acho que desse jeito ai resolve.
>
Boa noite dilonghi, o bruno ta certo, com SQL você resolve seu problema.
Você pode fazer assim exemplo.
SELECT idimovel, tipoimovel, domitorios, endereco, bairro, valor, datacadastro, status, (SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS FotoVê ai acho que desse jeito ai resolve.
Interessante o esquema do Select dentro do Select, ate tentei procurar mais exemploas na net, mas meu caso ta complicado.
Usando o teu Codigo da o seguinte erro:
Invalid column name 'idimovel'.
Invalid column name 'tipoimovel'.
Invalid column name 'domitorios'.
Invalid column name 'endereco'.
Invalid column name 'bairro'.
Invalid column name 'valor'.
Invalid column name 'datacadastro'.
Invalid column name 'status'.
The multi-part identifier "IMOVEIS.idimovel" could not be bound.
alguma ideia de como proseguir dentro dessa logica?
Aguardo.
Posta como ficou o SQL completo:
Tem q ficar tipo assim
SELECT idimovel, tipoimovel, domitorios, endereco, bairro, valor, datacadastro, status, (SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS Foto FROM IMOVEIS
>
Posta como ficou o SQL completo:
Tem q ficar tipo assim
SELECT idimovel, tipoimovel, domitorios, endereco, bairro, valor, datacadastro, status, (SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS Foto FROM IMOVEIS
Nao sei o que tinha feito de errado antes que tava dando erro.
Porem com agora funcinou em partes, não esta mais gerando erros no SELECT, mas nao estou conseguindo recuperar a Foto la no Gridview.
Se adiciono o meu ImageField, com a propriedade DataImageUrlField="imagem"
da erro: Não foi encontrado campo ou propriedade com o nome 'imagem' na fonte de dados selecionada.
saberia por que isso?
Acho que um alias na tabela de fora resolveria o caso...
>
Acho que um alias na tabela de fora resolveria o caso...
Bahh galera agredeço de verdade a ajuda, agora ficou 100%.
Alterei ali o AS Foto por AS imagem (nome do campo q precisava retorna) ai nao da mais o erro.
Na real não entendi bem pq, mas funcionou...
ficou assim:
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
abraços a todos q ajudaram.
Vamos entender
(SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS imagem
esse final "AS nome" é o nome que será dado ao resultado do select, ou seja era Foto por isso deu erro se você tivesse setado DataImageUrlField="Foto" não teria dado erro nenhum.
Esse AS é pra renomar campos como em SELECT idimovel as IM, tipoimovel AS ti, você teria no seu GRID IM ao inves de idimovel e teria ti ao inves de tipoimovel.
sacou
>
Vamos entender
(SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS imagem
esse final "AS nome" é o nome que será dado ao resultado do select, ou seja era Foto por isso deu erro se você tivesse setado DataImageUrlField="Foto" não teria dado erro nenhum.
Esse AS é pra renomar campos como em SELECT idimovel as IM, tipoimovel AS ti, você teria no seu GRID IM ao inves de idimovel e teria ti ao inves de tipoimovel.
sacou
Perfect.... o alias tb ajuda na performance http://forum.imasters.com.br/public/style_emoticons/default/devil.gif
>
>
Vamos entender
(SELECT Top(1) imagem FROM IMO_FOTOS WHERE (idimovel = IMOVEIS.idimovel) AND (principal = 1) ) AS imagem
esse final "AS nome" é o nome que será dado ao resultado do select, ou seja era Foto por isso deu erro se você tivesse setado DataImageUrlField="Foto" não teria dado erro nenhum.
Esse AS é pra renomar campos como em SELECT idimovel as IM, tipoimovel AS ti, você teria no seu GRID IM ao inves de idimovel e teria ti ao inves de tipoimovel.
sacou
Perfect.... o alias tb ajuda na performance http://forum.imasters.com.br/public/style_emoticons/default/devil.gif
Muito bomm.. Entendi sim. agora dei um Level Up no desenvolvimento..
valeu Ivan e Junior, pela força.
Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif SQL Server