Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

giga_fire

cláusula WHERE com campo CSV. Como?

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.