Estou com uma dificuldade que paralizou completamente meu trabalho.
Ja fiz todo tipo de busca no google e não encontrei nada que pudesse me ajudar...
É o seguinte:
Tenho uma galeria de fotos que busca as fotos por TAGS e quero fazer uma forma de refinar a busca adicionando outras tags a busca.
Tenho uma tabela 'fotos' (id, arquivo) e outra tabela 'tags' (id, tag, id_foto)
Fiz desta forma (tabelas separadas) para que o usuario pudesse acrescentar ou deletar tags de uma foto. E pata gerar a TAG CLOUD.
A busca estava simples com 1 tag. (SELECT * FROM tags WHERE tag LIKE '%paisagem%')
Quero buscar as fotos que tenham a tag 'paisagem' + 'verao' + 'rj'
Se eu usar o AND ou OR nao da certo. Sei que existem varios comandos (UNION, JOIN, etc..) porem nao sei utilizar nenhum deles...
Preciso de uma ajuda URGENTE.
Desde ja agradeço.
Busca Por Tags
Started By Joao borges, 02/12/2009, 16:12
2 replies to this topic
#1
Posted 02/12/2009, 16:12
#2
Posted 02/12/2009, 20:12
Você pode unir as tabelas assim:
Como você recebe esses valores na página para eu poder te auxiliar melhor?
SELECT * FROM fotos f, tags t WHERE f.id = t.id_foto
Você quer pesquisar com mais de uma tag ao mesmo tempo?Quero buscar as fotos que tenham a tag 'paisagem' + 'verao' + 'rj'
Como você recebe esses valores na página para eu poder te auxiliar melhor?
att,
Muller Dias
ex-administrador Fórum WMO
Muller Dias
ex-administrador Fórum WMO
#3
Posted 02/12/2009, 21:35
Se você quer que encontre todas as tags para satisfazer a pesquisa, então você precisa adicionar ao WHERE da query principal uma subquery para verificar se a foto tem cada uma tag:
Se for para encontrar o que tem no mínimo 1 tag, fica simples.
Você pode separar cada uma com uma vírgula, e adicionar como visto abaixo, como parâmetro para FIND_IN_SET().
EXISTS (SELECT 1 FROM tags WHERE id_foto = fotos.id AND tag = 'TAG')
Se for para encontrar o que tem no mínimo 1 tag, fica simples.
Você pode separar cada uma com uma vírgula, e adicionar como visto abaixo, como parâmetro para FIND_IN_SET().
SELECT * FROM fotos WHERE EXISTS (SELECT 1 FROM tags WHERE id_foto = fotos.id AND FIND_IN_SET(tag, 'TAG1,TAG2'))
- Paulo Freitas likes this
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)