SELECT DISTINCT COUNT VARIAS TABELAS

JEANCOELHO 09/06/2011 14:53:52
#376300
Boa noite estou desenvolvendo ums sistema de busca semelhante ao do mercado livre, preciso fazer o filtro da busca e contar qtos registros tem em cada filtro.

Ex: a pessoa busca Por Astra

No painel do filtro preciso listar quais categorias tem esse produto, quais estados, qual o tipo do produto se e novo ou usado. e na frente de cada item listado contar qtos registros tem em cada uma.


essa busca e feita em 3 tabelas diferentes.

Ja queimei a cuca e nao encontro uma solução se alguem puder da um help.
JEANCOELHO 09/06/2011 16:21:53
#376320
Tentei aqui nao funcionou, mas valeu a dica.

http://www.mercattu.com.br/busca_lista_resultado2.asp?txtBusca=a&tipoRequest=string&secao=tudo&order=relevAsc

Eu tenho esses 4 campos em comum em todas as tabelas, Estado, Cidade, Categoria, Tipo.

ai preciso listar nesse painel ai ao lado somente os dados que retornam da consulta, so que tb queria evitar uma nova query acredito que isso seja feito dentro do recordset
JEANCOELHO 09/06/2011 16:25:07
#376322
pra uma tabela so eu fiz assim


<br>Por Regiao<br>
<%
Set TmpLoc = conexao.execute([Ô]select Distinct(estado) from tb_anunciosProd WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô])

Do While not tmpLoc.eof

Set TmpLocc = conexao.execute([Ô]select Count(*) As total from tb_anunciosProd WHERE estado = [ô][Ô]& tmpLoc([Ô]estado[Ô]) &[Ô][ô] and tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô])

Do While not tmpLocc.eof
%>

<%=tmpLoc([Ô]estado[Ô])%>(<%=tmpLocc([Ô]total[Ô])%>)<br>

<% tmpLocc.MoveNext
loop

tmpLoc.MoveNext
loop
%>
ASHKATCHUP 09/06/2011 16:26:04
#376323
Poste todos campos da tabela [Ô]PRODUTO[Ô]

Tu vai ter que fazer várias queries. Fato.
JEANCOELHO 09/06/2011 16:41:06
#376324
Fiz assim agora e listo legal

<%
Set rsFiltro= Server.CreateObject([Ô]ADODB.RECORDSET[Ô])
sqlFiltro = [Ô]select Distinct(estado) from tb_anunciosProd WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô] &_
[Ô]union [Ô] &_
[Ô]select Distinct(estado) from tb_anuncios WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô]

rsFiltro.CursorType = 3 [ô]adOpenStatic
Set rsFiltro.ActiveConnection = conexao
rsFiltro.Open sqlFiltro

Do While not rsFiltro.eof

response.write RsFiltro([Ô]estado[Ô]) & [Ô]<br>[Ô]

RsFiltro.MoveNext
loop
%>


Agora falta contar qtos registros tem cada rs

Alguma dica?
ASHKATCHUP 09/06/2011 16:48:29
#376328
Depende do banco de dados..

Pseudocódigo

Select Count(Distinct(Estados))
From Anuncios
Where Titulo = [Ô]PROCUREI[Ô]
JEANCOELHO 09/06/2011 16:54:15
#376330
funfo nao irmao, mas Obrigado assim msm.
JEANCOELHO 09/06/2011 17:33:32
#376334
com esse codigo ele me retorna estranho o resultado

<%
Set rsFiltroTipo= Server.CreateObject([Ô]ADODB.RECORDSET[Ô])
sqlFiltroTipo = [Ô]select Distinct(estadoProduto) As State from tb_anunciosProd WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô] &_
[Ô]union [Ô] &_
[Ô]select Distinct(estadoVeiculo) As State from tb_anuncios WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô]

rsFiltroTipo.CursorType = 3 [ô]adOpenStatic
Set rsFiltroTipo.ActiveConnection = conexao
rsFiltroTipo.Open sqlFiltroTipo

Do While not rsFiltroTipo.eof

set TipoCount = conexao.execute([Ô]select count(*) as Total from tb_anunciosProd WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô] and estadoProduto = [ô][Ô]& rsFiltroTipo([Ô]State[Ô]) &[Ô][ô][Ô] &_
[Ô]union [Ô] &_
[Ô]select count(*) as Total from tb_anuncios WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô] and estadoVeiculo = [ô][Ô]& rsFiltroTipo([Ô]State[Ô]) &[Ô][ô][Ô])

Do While not TipoCount.eof

response.write rsFiltroTipo([Ô]State[Ô]) & [Ô]([Ô] & TipoCount([Ô]Total[Ô]) & [Ô])[Ô] &[Ô]<br>[Ô]

TipoCount.MoveNext
loop

rsFiltroTipo.MoveNext
loop

set rsFiltroTipo = Nothing
%>


Retorna assim


Por Tipo
novo(7)
novo(25)
usado(0)
usado(2)

O Correto seria

Por Tipo
novo(25)
usado(2)
ASHKATCHUP 09/06/2011 17:43:24
#376336
usa um group by
JEANCOELHO 09/06/2011 17:51:22
#376337
<%
Set rsFiltroTipo= Server.CreateObject([Ô]ADODB.RECORDSET[Ô])
sqlFiltroTipo = [Ô]select Distinct(estadoProduto) As State from tb_anunciosProd WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô] &_
[Ô]union [Ô] &_
[Ô]select Distinct(estadoVeiculo) As State from tb_anuncios WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô][Ô]

rsFiltroTipo.CursorType = 3 [ô]adOpenStatic
Set rsFiltroTipo.ActiveConnection = conexao
rsFiltroTipo.Open sqlFiltroTipo

Do While not rsFiltroTipo.eof

set TipoCount = conexao.execute([Ô]select estadoProduto, count(*) as Total from tb_anunciosProd WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô] and estadoProduto = [ô][Ô]& rsFiltroTipo([Ô]State[Ô]) &[Ô][ô] GROUP BY estadoProduto [Ô] &_
[Ô]union [Ô] &_
[Ô]select estadoVeiculo, count(*) as Total from tb_anuncios WHERE tituloAnuncio LIKE [ô]%[Ô]& txtBusca &[Ô]%[ô] and estadoVeiculo = [ô][Ô]& rsFiltroTipo([Ô]State[Ô]) &[Ô][ô] GROUP BY estadoVeiculo[Ô])

Do While not TipoCount.eof

response.write rsFiltroTipo([Ô]State[Ô]) & [Ô]([Ô] & TipoCount([Ô]Total[Ô]) & [Ô])[Ô] &[Ô]<br>[Ô]

TipoCount.MoveNext
loop

rsFiltroTipo.MoveNext
loop

set rsFiltroTipo = Nothing
%>


retorno assim

Por Tipo
novo(7)
novo(25)
usado(2)
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas