|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Filtrar registros com determinado campo sendo únicoOlá 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 único2009/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 únicoOlá 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 único2009/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 |
| Free embeddable forum powered by Nabble | Forum Help |