Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PhoEniXFirE

Mostrar Somente Categoria Com Conteudo

Recommended Posts

Pessoal,Tô desenvolvendo um sistema de comercio local, onde na pag inicial irá apresentar os tipos de comercios, mas inicialmente nem todos os tipos terão comércios adicionados, por exemplo, BOMBONIERE ainda n tem loja p anunciar, queria saber como faço p apresentar somentes as categorias/tipos que tem comercios adicionados.No banco (como padrão) são duas tabelas:- A 1ª [Tipo] onde está os tipos de comércios (categorias), com [Cod] (que seria o id) e a [Descricao] (nome do tipo do comércio).- A 2ª [Conteudo], onde estão os comércios propriamente ditos com suas informações, e uma coluna [secao] ligada a 1ª tabela, que diz de qual tipo de comério se trata.Se alguém puder me da uma luz de como fazer isso agradeço, porque realmente n sabendo como fazer isso.Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara se eu entendi certo é no where, verifica se existe e só manda exiir as categorias que possuam as condiçoes que você referenciar!bjs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser feito também um INNER JOIN...

 

"SELECT * FROM categoria C INNER JOIN comercio CM ON C.cdcategoria = CM.cdcategoria "

 

... e por ai vai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser feito também um INNER JOIN..."SELECT * FROM categoria C INNER JOIN comercio CM ON C.cdcategoria = CM.cdcategoria "... e por ai vai...

Funcionou beleza!você conhece algo com HAVING q poderia ser utilziado tb ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que having não serve para unir tabelas nao... nunca vi nada parecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um problema q vim observar agora, olha como está resultando:

Comércios:

» Bombonieres (1) » Churrascarias / Restaurantes (2)

» Churrascarias / Restaurantes (2) » Escolas / Cursos (1)

» Farmácias (3) » Farmácias (3)

» Farmácias (3) » Financeiras (1)

» Hotéis / Pousadas / Motéis (1) » Lojas / Boutiques (2)

» Lojas / Boutiques (2) » Materais de Construção (1)

» Moto Peças / Bicicletas (1) » Óticas (1)

» Pronta Entrega (1) » Relojoarias / Joalherias / Bijuterias (1)

» Salões de Beleza (1) » Sapatarias (1)

» Sorveterias (1) » Supermercados / Mercadinhos (2)

» Supermercados / Mercadinhos (2)

 

No caso o número de comércios q tem adicionados eh usando tb p apresentar as categorias, olha meu cód:

<%set RS = Server.CreateObject("ADODB.Recordset")RS.ActiveConnection = ConnRS.Source = "SELECT *, (SELECT COUNT (*) FROM Conteudo WHERE Conteudo.Secao = Tipo.Cod) AS TOTAL FROM Tipo INNER JOIN Conteudo ON Conteudo.Secao = Tipo.Cod ORDER BY Descricao ASC"RS.Open()%><table border="0" cellpadding="5" cellspacing="3" style="border-collapse: collapse" width="460">			  <%startrw = 0endrw = 0numberColumns = 2numrows = -1while((numrows <> 0) AND (Not RS.EOF))	startrw = endrw + 1	endrw = endrw + numberColumns %>			  <tr> 				<%While ((startrw <= endrw) AND (Not RS.EOF))%>	<td align="center" style="font-family: Tahoma, Verdana, Arial; font-size: 9 pt;">» <font size=2 style="font-weight:700"><A HREF="comercio.asp?tipo=<%=(RS.Fields.Item("Cod").Value)%>" style="color: #9C1208;"><%=(RS.Fields.Item("Descricao").Value)%></A></font><font face=arial size=1> <i>(<%=(RS.Fields.Item("total").Value)%>)</i></td>				</td>				<%	startrw = startrw + 1	RS.MoveNext()	Wend	%>			  </tr>			  <% numrows=numrows-1 Wend %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi o erro.

Tipo:A categoria Farmácia tem 3 comércios cadastrados, então no menu principal ela apareceu 3x, como pode observar lá, n sei pq, deve ser a propriedade do INNER JOIN q faz isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

 

Faz o seguinte...

"SELECT DISTINCTROW C.cdcategoria, C.nmcategoria FROM categoria C INNER JOIN comercio CM ON C.cdcategoria = CM.cdcategoria "

 

No seu codigo ficaria +- assim

"SELECT DISTINCTROW C.cdcategoria, C.nmcategoria, (SELECT COUNT (*) FROM Conteudo WHERE Conteudo.Secao = Tipo.Cod) AS TOTAL FROM Tipo INNER JOIN Conteudo ON Conteudo.Secao = Tipo.Cod ORDER BY Descricao ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.Faz o seguinte..."SELECT DISTINCTROW C.cdcategoria, C.nmcategoria FROM categoria C INNER JOIN comercio CM ON C.cdcategoria = CM.cdcategoria "No seu codigo ficaria +- assim"SELECT DISTINCTROW C.cdcategoria, C.nmcategoria, (SELECT COUNT (*) FROM Conteudo WHERE Conteudo.Secao = Tipo.Cod) AS TOTAL FROM Tipo INNER JOIN Conteudo ON Conteudo.Secao = Tipo.Cod ORDER BY Descricao ASC"

Chefe deu no mesmo, continuou repitindo o nome da categoria igual aos comércios adicionados. Usei:
RS.Source = "SELECT DISTINCTROW Conteudo.Secao, Tipo.Descricao As Descricao, Tipo.Cod AS Cod, (SELECT COUNT (*) FROM Conteudo WHERE Conteudo.Secao = Tipo.Cod) AS TOTAL FROM Tipo INNER JOIN Conteudo ON Conteudo.Secao = Tipo.Cod ORDER BY Descricao ASC"
Q eh o q'eu precisei usar, usei tb "*," e continuou repetindo.Será q o problema n eh o While?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está no sql mesmo...

Utiliza

RS.Source = "SELECT DISTINCTROW Tipo.Cod AS Cod, Tipo.Descricao As Descricao, (SELECT COUNT (*) FROM Conteudo WHERE Conteudo.Secao = Tipo.Cod) AS TOTAL FROM Tipo INNER JOIN Conteudo ON Conteudo.Secao = Tipo.Cod ORDER BY Descricao ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá aki a resposta:

 

"SELECT Conteudo.Secao, Tipo.Descricao As Descricao, Tipo.Cod AS Cod, (SELECT COUNT (*) FROM Conteudo WHERE Conteudo.Secao = Tipo.Cod) AS TOTAL FROM Tipo INNER JOIN Conteudo ON Conteudo.Secao = Tipo.Cod GROUP BY Conteudo.Secao, Tipo.Descricao, Tipo.Cod ORDER BY Descricao ASC"

GROUP BY Conteudo.Secao, Tipo.Descricao, Tipo.Cod foi a solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.