giga_fire 0 Denunciar post Postado Julho 15, 2007 Olá pessoal Tenho duas tabelas: noticias e tags. A tabela tags é bem simples, tem uma ID e o nome da tag. A tabela notícias tem um campo "tags", que contém as IDs das tags dessa notícia, separadas por vírgula. Exemplo: Tabela noticias id tags titulo, texto, data... 1 1,4 ... 2 2 ... 3 1,2,4 ... 4 3,5 ... Agora, como eu faço por exemplo pra pegar todas as notícias da tag 2? Ou para pegar as que tem tag 2 e 4? Eu não sei fazer isso... Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Julho 15, 2007 Você pode usar a função FIND_IN_SET() para procurar o id da tag no campo tags. FIND_IN_SET(str,strlista) Retorna um valor 1 para N se a string str está na lista strlist contendo N substrings. A lista de string é composta de substrings separadas pelo caracter `,'. Se o primeiro argumento é uma string constante e o segundo é uma coluna do tipo SET, a função FIND_IN_SET() é otimizada para usar aritmética binária! Retorna 0 se str não está na strlista ou se strlista é uma string vazia. Retorna NULL se os argumentos são NULL. Esta função não irá funcionar adequadamente se o primeiro argumento contém uma vírgula (`,'): mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2 Exemplo: select * from noticias where find_in_set(2, tags) Compartilhar este post Link para o post Compartilhar em outros sites
giga_fire 0 Denunciar post Postado Julho 15, 2007 Muito obrigado, Eclesiastes Funciona mesmo! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites