Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve Feras...!
Tenho um problema que já procurei pela internet toda(exagero) e não achei solução. Seguinte, tenho duas tabelas a primeira com a seguinte estrutura:
TABELA PLACES
id int(5) NOT NULL auto_increment,
`Company_name
Address
foto_link
Fone
descricao
categoria_empresasID
tags
usuarioID
bairroID
ordenare a segunda com a seguinte estrutura:
TABELA produtos (
`produtoID
produto
imagem
preco
especificacoes
categoria_produtosID
usuarioID O campo usuarioID armazena, nas duas tabelas, dados idênticos referenciados a uma tabela de usuarios, sendo que na tabela "places" existe um só registro para usuarioID e na tabela "produtos" o usuarioID poderá ter vários registros. Pois bem, necessito uma consulta que busque, conforme váriavel previamente definida, da tabela "produtos" todos os registros que correspondam a variavel buscada mas limite a 1 registro por usuarioID e faça um JOIN com a tabela places onde usuarioID coincida com produtos.usuarioID. Tentei fazer assim:
SELECT places.*, produtos.produto FROM places LEFT JOIN produtos ON places.usuarioID = produtos.usuarioID WHERE produto LIKE '%".$search."%' OR id LIKE '%".$search."%' OR Company_name LIKE '%".$search."%' OR Address LIKE '%".$search."%' OR Fone LIKE '%".$search."%' OR descricao LIKE '%".$search."%' OR tags LIKE '%".$search."%' ORDER BY ordenar DESC LIMIT 5
A query acontece com sucesso, mas o que acontece é que se o usuarioID 1 tiver 30 produtos com o nome procurado pela variável a consulta retorna todos os trinta produtos, juntando a tabela places a cada ocorrência do produto, ou seja, gerando 30 resultados iguais - produto e empresa igual e se o usuarioID 2 tiver mais 30 ele gera mais 30 resultados e assim sucessivamente. Já tentei com um sub SELECT com LIMIT 1 no LEFT JOIN mas ele continua listando todos os dados. É aqui que quebro a cabeça e não encontro a solução. Quero que ele busque a varíavel, e se existir outro registro parecido para o mesmo usuário o mysql salta e busca o campo que coincida com a variável mas de outros usuarioID, e ainda continue consultando na tabela places se existe alguma ocorrência para a variável. Não sei se talvez teria que deixar ele retornar todos os dados e tratar os resultados com php, mas como?
Ufa... não sei se fui claro o bastante...
O desafio é grande, quem se habilita a ajudar na solução?
Desde já grato...
Andrey
Carregando comentários...