Filtrar registros com determinado campo sendo único

View: New views
4 Messages — Rating Filter:   Alert me  

Filtrar registros com determinado campo sendo único

by Michel Thadeu Sabchuk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Olá pessoal,

Gostaria de saber se alguém tem uma sugestão para eu atender minha demanda:

Estou administrando um portal de anúncios classificados grátis [1] e
na sua capa eu listo os últimos anúncios realizados por usuários.

Uma coisa que acontece com certa frequencia é o usuário anunciar
várias vezes o mesmo produto, seja por engano ou intencionalmente.

Eu ainda não defini a melhor abordagem para evitar isso, por enquanto
estou moderando os anúncios repetidos mas eu queria evitar que os
anúncios duplicados aparecessem entre o momento que foram anunciados e
o momento que eu detectei a duplicata.

Já implantei algumas alternativas simples para evitar que o usuário
faça isso por engano, agora, gostaria de mostrar anúncios de autores
únicos na capa do site.

O ideal seria eu listar os últimos anúncios cadastrados e filtrá-los
para que eu mostrasse um de cada autor, limitando em cinco anúncios.
Acho que isso não é possível certo?

Pensei também em listar os autores em paralelo com um subselect que me
dissesse o último anúncio dele, eu ordenaria pela data do anúncio e
pegaria o último cadastrado de cada autor. O problema é que parte dos
meus anúncios tem autores registrados, armazenados numa tabela
especifica e outra parte tem autores não-registrados, identificados
por campos para nome e email no próprio anúncio. Nesta abordagem
proposta, seria difícil mesclar as duas hipóteses.

Como preciso só de 5 anúncios, poderia listar uns 30 e torcer para
que, nesses 30 existam ao menos 5 autores únicos (pelas estatísticas
isso acontece). Não é uma solução elegante :) Gostaria de tentar outra
abordagem antes de seguir este passo.

Alguém tem alguma sugestão?

[1] http://portaldoclassificado.com/pr/

--
Michel Thadeu Sabchuk
Curitiba - Brasil
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Filtrar registros com determinado campo sendo único

by Osvaldo Kussama :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/11/4 Michel Sabchuk <michelts@...>:

> Olá pessoal,
>
> Gostaria de saber se alguém tem uma sugestão para eu atender minha demanda:
>
> Estou administrando um portal de anúncios classificados grátis [1] e
> na sua capa eu listo os últimos anúncios realizados por usuários.
>
> Uma coisa que acontece com certa frequencia é o usuário anunciar
> várias vezes o mesmo produto, seja por engano ou intencionalmente.
>
> Eu ainda não defini a melhor abordagem para evitar isso, por enquanto
> estou moderando os anúncios repetidos mas eu queria evitar que os
> anúncios duplicados aparecessem entre o momento que foram anunciados e
> o momento que eu detectei a duplicata.
>
> Já implantei algumas alternativas simples para evitar que o usuário
> faça isso por engano, agora, gostaria de mostrar anúncios de autores
> únicos na capa do site.
>
> O ideal seria eu listar os últimos anúncios cadastrados e filtrá-los
> para que eu mostrasse um de cada autor, limitando em cinco anúncios.
> Acho que isso não é possível certo?
>
> Pensei também em listar os autores em paralelo com um subselect que me
> dissesse o último anúncio dele, eu ordenaria pela data do anúncio e
> pegaria o último cadastrado de cada autor. O problema é que parte dos
> meus anúncios tem autores registrados, armazenados numa tabela
> especifica e outra parte tem autores não-registrados, identificados
> por campos para nome e email no próprio anúncio. Nesta abordagem
> proposta, seria difícil mesclar as duas hipóteses.
>
> Como preciso só de 5 anúncios, poderia listar uns 30 e torcer para
> que, nesses 30 existam ao menos 5 autores únicos (pelas estatísticas
> isso acontece). Não é uma solução elegante :) Gostaria de tentar outra
> abordagem antes de seguir este passo.
>
> Alguém tem alguma sugestão?
>
> [1] http://portaldoclassificado.com/pr/
>


Tente algo do tipo:

SELECT autor, max(data_anuncio) FROM sua_tabela
GROUP BY autor
ORDER BY random()
LIMIT 5;

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Filtrar registros com determinado campo sendo único

by Michel Thadeu Sabchuk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Olá Osvaldo,

> SELECT autor, max(data_anuncio) FROM sua_tabela
> GROUP BY autor
> ORDER BY random()
> LIMIT 5;

Certo, tinha pensado em algo assim, eu encontro os autores com
anúncios mais recentes numa consulta e na outra trago seus anúncios
completos. O problema é que os autores podem vir de dois repositórios.

Usando a sugestão do João, acho que o problema não é nem a consulta, é
a modelagem. O autor de um anúncio é definido em uma tabela de contas
de usuário, o ideal seria eu ter uma tabela de autores e esta ser
relacionada com uma conta de usuário ou não.

Obrigado por sua ajuda!

--
Michel Thadeu Sabchuk
Curitiba - Brasil
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Filtrar registros com determinado campo sendo único

by Tarcísio Sassara :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/11/4 Michel Sabchuk <michelts@...>:

> Olá Osvaldo,
>
>> SELECT autor, max(data_anuncio) FROM sua_tabela
>> GROUP BY autor
>> ORDER BY random()
>> LIMIT 5;
>
> Certo, tinha pensado em algo assim, eu encontro os autores com
> anúncios mais recentes numa consulta e na outra trago seus anúncios
> completos. O problema é que os autores podem vir de dois repositórios.

Não é o caso de pegar uma parte de cada tabela e depois fazer um UNION.

>
> Usando a sugestão do João, acho que o problema não é nem a consulta, é
> a modelagem.
Parece ser sim. Está pensando em refatorar?

--
Tarcisio F. Sassara
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral