gremio10 14 Denunciar post Postado Outubro 13, 2011 Então pessoal, vocês sabem os trends do twitter, pois é, eu tenho de fazer algo parecido, só que comigo são as tags que mais se repetem em toda uma tabela. Agora, eu não sei como posso fazer pois não posso ir pesquisando uma por uma :lol: Eu encontrei esse tópico, mas infelizmente, não foi resolvido :mellow: http://forum.imasters.com.br/topic/421168-como-listar-as-palavras-que-mais-se-repetem-em-uma-tabela-do-my/ Obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 13, 2011 É trabalhoso. Separar a string palavra por palavra e contar as mesmas, separar as irrelevantes como artigos , preposições etc. Não sei se o MySql por ser muito usado na WEB já tem algo +ou- pronto para isto, deve ter. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 13, 2011 Será que existe algum jeito de fazer isso ? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Outubro 21, 2011 Muito mais fácil você gravar essas palavras em uma tabela separada. andrey@andrey:~$ mysql -u root -p Enter password: ************ Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 623 Server version: 5.1.41 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use iMasters; Database changed mysql> create table words ( -> id integer auto_increment, -> word varchar ( 42 ) not null , -> primary key ( id ) -> ) engine = myisam; Query OK, 0 rows affected (0.06 sec) mysql> insert into words ( `word` ) values -> ( 'programação' ) , -> ( 'codificação' ), -> ( 'google' ) , -> ( 'yahoo' ) , -> ( 'bomba' ) , -> ( 'hiv' ) , -> ( 'terminal' ) , -> ( 'linux' ) , -> ( 'windows' ) , -> ( 'windows' ) , -> ( 'sql' ) , -> ( 'php' ) , -> ( 'mysql' ), -> ( 'google+' ), -> ( 'google' ), -> ( 'terminal' ), -> ( 'yahoo' ), -> ( 'microsoft' ) ; Query OK, 18 rows affected (0.00 sec) Records: 18 Duplicates: 0 Warnings: 0 mysql> select word from words group by word having count(*) > 1; +----------+ | word | +----------+ | google | | terminal | | windows | | yahoo | +----------+ 4 rows in set (0.00 sec) mysql> select word, count(*) from words group by word having count(*) > 1; +----------+----------+ | word | count(*) | +----------+----------+ | google | 2 | | terminal | 2 | | windows | 2 | | yahoo | 2 | +----------+----------+ 4 rows in set (0.00 sec) mysql> insert into words values ( null , 'Google' ) ; Query OK, 1 row affected (0.00 sec) mysql> select word, count(*) from words group by word having count(*) > 1; +----------+----------+ | word | count(*) | +----------+----------+ | google | 3 | | terminal | 2 | | windows | 2 | | yahoo | 2 | +----------+----------+ 4 rows in set (0.00 sec) mysql> select word, count(*) as `rpt` from words group by word having count(*) >= 1 order by `rpt` desc; +-------------+-----+ | word | rpt | +-------------+-----+ | google | 3 | | windows | 2 | | terminal | 2 | | yahoo | 2 | | programação | 1 | | bomba | 1 | | google+ | 1 | | codificação | 1 | | hiv | 1 | | sql | 1 | | microsoft | 1 | | php | 1 | | linux | 1 | | mysql | 1 | +-------------+-----+ 14 rows in set (0.00 sec) Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 21, 2011 O problema é que guardar as palavras vai ter um excesso de registros inúteis que servem apenas para dar uma listagem ao usuário. Mas é uma solução sim, valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Outubro 21, 2011 Cara, de outro jeito é impossível .. alias, impossível no SQL puro .. talvez uma function, procedure você consiga .. mas é meio chato de fazer esse tipo de coisa ( brincando com delimitadores de texto em uma unica coluna ) , o que eu recomendo, é um contador. Você cria uma tabela, onde será armazenado ( tag , used ) , então quando alguém adicionar essa tag, você verifica se há uma tag existente no banco, se houver, soma +1 no used, se não houver, adiciona a tag .. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 21, 2011 Verdade, eu estava pensando nisso, mas como não sei muito SQL, fui no google e aqui para tirar dúvidas... Vou fazer isso, obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 21, 2011 Verdade, eu estava pensando nisso, mas como não sei muito SQL, fui no google e aqui para tirar dúvidas... Vou fazer isso, obrigado Terá de montar uma inteligencia para expugar as palavras irrelevantes. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 21, 2011 Terá de montar uma inteligencia para expugar as palavras irrelevantes. Pois é Motta, vou ter de fazer testes e testes tanto no SQL quanto na linguagem de programação... só tenho uma duvida, será que outro tipo de linguagem de programação não facilitaria o filtro dos dados ? tipo ruby ou python ? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Outubro 22, 2011 só tenho uma duvida, será que outro tipo de linguagem de programação não facilitaria o filtro dos dados ? tipo ruby ou python ? Sim, seria exatamente aí onde você faria esse filtro. Compartilhar este post Link para o post Compartilhar em outros sites