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

Não mostrar se estiver vazio


Thiago K.

Pergunta

Olá pessoal,

Estou com um problema aqui.

Tenho uma tabela de lojas que está relacionada com uma tabela de cidades e outra de estados.

O que eu quero é basicamente não mostrar as cidades e os estados que não possuem um escritório relacionado.

Será que deu para entender? :blink:

O código:

<%

Set rsCidades = Server.CreateObject("ADODB.RecordSet")
        sql = ""
        sql = sql & " SELECT a.ID, a.cidade, b.uf "
        sql = sql & " FROM tb_cidades A, tb_estados b "
        sql = sql & " WHERE a.IDestado = b.ID "

rsCidades.Open SQL, Conexao, 3, 3

%>
<%While NOT rsCidades.EOF%>
        <p><%=rsCidades(1)%> - <%=rsCidades(2)%></p>
        <%
           Set rsUnidadesLista = Server.CreateObject("ADODB.RecordSet")
        sql = ""
        sql = sql & " SELECT ID, nome "
        sql = sql & " FROM tb_unidades "
        sql = sql & " WHERE IDtipo = 1 "
        sql = sql & " AND status = 1 "
        sql = sql & " AND cidade = "&rsCidades(0)&" "
        sql = sql & " ORDER BY ordem ASC "

rsUnidadesLista.Open SQL, Conexao, 3, 3
           
          While NOT rsUnidadesLista.EOF
          %>
        <p><a href="unidades_detalhe.asp?ID=<%=rsUnidadesLista(0)%>"> › <%=rsUnidadesLista(1)%></a></p>
        <%
rsUnidadesLista.MoveNext()
Wend
%>
        <%
rsCidades.MoveNext()
Wend
end if
%>

O resultado:

Notem, que somente Campinas e Uberlândia possuem escritório, então não queria mostrar as outras cidades/estados.

São Paulo - SP

Guarulhos - SP

Barueri - SP

Campinas - SP

› Escritório em Campinas

Jundiaí - SP

Valinhos - SP

Uberlândia - MG

› Escritório em Uberlândia

O ideal seria:

Campinas - SP

› Escritório em Campinas

Uberlândia - MG

› Escritório em Uberlândia

Será que alguém pode me ajudar?

Agradeço desde já...

Editado por Thiago K.
Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
use INNER JOIN ou 3 selects....

Olá bareta,

Cara você realmente me deu uma luz, porque de curioso fui no teu blog e vi como funciona o tal do INNER JOIN.

Agora, consegui mostrar apenas as cidades que tem escritório, mas preciso agrupá-las. Usei o GROUP BY, mas não deu certo. Onde estou errando?

<%
Dim Conexao, rsProdutos, strSQL
strSQL = "SELECT tb_unidades.ID, tb_unidades.nome, tb_cidades.cidade "
strSQL = strSQL & "FROM tb_unidades "
strSQL = strSQL & "INNER JOIN tb_cidades "
strSQL = strSQL & "ON tb_unidades.cidade = tb_cidades.ID "
strSQL = strSQL & " WHERE tb_unidades.IDtipo = 2 "
strSQL = strSQL & "GROUP BY tb_unidades.cidade, tb_unidades.ID, tb_unidades.nome, tb_cidades.cidade "
strSQL = strSQL & "ORDER BY tb_unidades.cidade "

'Call Conexao
Set rsProdutos = Server.CreateObject("ADODB.Recordset")
Set rsProdutos = Conexao.Execute(strSQL)
'Response.Write "" & rsProdutos(2) & ""
While Not rsProdutos.EOF
Response.Write "<br />" & rsProdutos(2) & ""
Response.Write "<br />unidade: " & rsProdutos(1) & ""
rsProdutos.MoveNext
Wend
rsProdutos.Close
'Call Conexao
Set rsProdutos = Nothing
%>

O resultado está assim:

São Paulo

unidade: Moema Índios

São Paulo

unidade: Pinheiros

São Paulo

unidade: Alto de Pinheiros

São Paulo

unidade: Vila Leopoldina

São Paulo

unidade: Tatuapé

São Paulo

unidade: Higienópolis

São Paulo

unidade: Perdizes

São Paulo

unidade: Morumbi

São Paulo

unidade: Aclimação

São Paulo

unidade: Pompéia

São Paulo

unidade: Jardins

Guarulhos

unidade: Guarulhos

Barueri

unidade: Shopping Tamboré

Campinas

unidade: Cambuí

Jundiaí

unidade: Jundiaí

Valinhos

unidade: Shopping Valinhos

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

<%
Dim Conexao, rsProdutos, strSQL
strSQL = "SELECT tb_unidades.ID, tb_unidades.nome, tb_cidades.cidade "
strSQL = strSQL & "FROM tb_unidades "
strSQL = strSQL & "INNER JOIN tb_cidades "
strSQL = strSQL & "ON tb_unidades.cidade = tb_cidades.ID "
strSQL = strSQL & " WHERE tb_unidades.IDtipo = 2 "
strSQL = strSQL & "GROUP BY tb_unidades.cidade, tb_unidades.ID, tb_unidades.nome, tb_cidades.cidade "

'Call Conexao
Set rsProdutos = Server.CreateObject("ADODB.Recordset")
Set rsProdutos = Conexao.Execute(strSQL)
'Response.Write "" & rsProdutos(2) & ""
While Not rsProdutos.EOF
Response.Write "<br />" & rsProdutos(2) & ""
Response.Write "<br />unidade: " & rsProdutos(1) & ""
rsProdutos.MoveNext
Wend
rsProdutos.Close
'Call Conexao
Set rsProdutos = Nothing
%>

Em qualquer lugar que eu coloco o DISTINCT da erro.

Editado por Thiago K.
Link para o comentário
Compartilhar em outros sites

  • 0

O DISTINCT da erro mesmo!

E o GROUP não está funcionando, não sei mais o que fazer.

O resultado fica assim:

São Paulo

unidade: Moema Índios

São Paulo

unidade: Pinheiros

São Paulo

unidade: Alto de Pinheiros

São Paulo

unidade: Vila Leopoldina

São Paulo

unidade: Tatuapé

São Paulo

unidade: Higienópolis

São Paulo

unidade: Perdizes

São Paulo

unidade: Morumbi

São Paulo

unidade: Aclimação

São Paulo

unidade: Pompéia

São Paulo

unidade: Jardins

Guarulhos

unidade: Guarulhos

Barueri

unidade: Shopping Tamboré

Campinas

unidade: Cambuí

Jundiaí

unidade: Jundiaí

Valinhos

unidade: Shopping Valinhos

Link para o comentário
Compartilhar em outros sites

  • 0
como eu disse o distinct tem q ser o primeiro

Ok, bareta, eu já entendi e também como já disse, quando uso DISTINCT retorna com erro.

Pode me ajudar?

Obrigado.

O código está abaixo:

<%
Dim Conexao, rsProdutos, strSQL
strSQL = "SELECT DISTINCT tb_unidades.ID, tb_unidades.nome, tb_cidades.cidade "
strSQL = strSQL & " FROM tb_unidades "
strSQL = strSQL & " INNER JOIN tb_cidades "
strSQL = strSQL & " ON tb_unidades.cidade = tb_cidades.ID "
strSQL = strSQL & " WHERE tb_unidades.IDtipo = 2 "

Set rsProdutos = Server.CreateObject("ADODB.Recordset")
Set rsProdutos = Conexao.Execute(strSQL)
While Not rsProdutos.EOF
Response.Write "<br />" & rsProdutos(2) & ""
Response.Write "<br />unidade: " & rsProdutos(1) & ""
rsProdutos.MoveNext
Wend
rsProdutos.Close
Set rsProdutos = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

algo do tipo

strSQL = "SELECT DISTINCT(tb_cidades.cidade),  tb_unidades.ID, tb_unidades.nome"
strSQL = strSQL & " FROM tb_unidades "
strSQL = strSQL & " INNER JOIN tb_cidades "
strSQL = strSQL & " ON tb_unidades.cidade = tb_cidades.ID "
strSQL = strSQL & " WHERE tb_unidades.IDtipo = 2 "

Link para o comentário
Compartilhar em outros sites

  • 0
algo do tipo

strSQL = "SELECT DISTINCT(tb_cidades.cidade),  tb_unidades.ID, tb_unidades.nome"
strSQL = strSQL & " FROM tb_unidades "
strSQL = strSQL & " INNER JOIN tb_cidades "
strSQL = strSQL & " ON tb_unidades.cidade = tb_cidades.ID "
strSQL = strSQL & " WHERE tb_unidades.IDtipo = 2 "

Olá bareta,

Infelizmente ainda não consegui resolver esse problema.

Fiz exatamente como me passou, mas ainda aparece assim:

Barueri

› Shopping Tamboré

Campinas

› Cambuí

Guarulhos

› Guarulhos

Jundiaí

› Jundiaí

São Paulo

› Moema Índios

São Paulo

› Pinheiros

São Paulo

› Alto de Pinheiros

São Paulo

› Vila Leopoldina

São Paulo

› Tatuapé

São Paulo

› Higienópolis

São Paulo

› Perdizes

São Paulo

› Morumbi

São Paulo

› Aclimação

São Paulo

› Pompéia

São Paulo

› Jardins

Valinhos

› Shopping Valinhos

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,3k
×
×
  • Criar Novo...