Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde, galera!
Véspera de feriado e não estou com paciência para pensar kkkk
Preciso juntar duas tabelas e consultar entre elas com uma sequencia numerica (array PHP)...
Exemplo
advogados.area_atuacao = '1,2,3,5'
SELECT advogados.id, advogados.nome, advogados.area_atuacao, advogados.email, advogados.status, areatuacao.id, areatuacao.titulo
FROM advogados
STRAIGHT_JOIN areatuacao ON areatuacao.id = advogados.area_atuacao
ORDER BY advogados.id, areatuacao.titulo DESC
LIMIT 0 , 4
STRAIGHT_JOIN: faz com que a tabela a esquerda seja lida primeiro, isso é utilizado quando o otimizador do JOIN coloca as tabelas em ordem errada. Isto é muito pouco utilizado.
A ideia é passar 1,2,3,5 para comparar de uma vez no SELECT... Se ter que quebrar o ARRAY
hmm... intereçante! valeu a dica ;)
IN ?!
SELECT advogados.id, advogados.nome, advogados.area_atuacao, advogados.email, advogados.status, areatuacao.id, areatuacao.titulo
FROM advogados
STRAIGHT_JOIN areatuacao ON areatuacao.id = advogados.area_atuacao
where advogados.area_atuacao in (1,2,3,5)
ORDER BY advogados.id, areatuacao.titulo DESC
LIMIT 0 , 4
Motta, desta forma consegui resolver o problema anterior
Valew
Mas agora me ajuda em uma outra coisa.
Quando utilizo o IN faço ... WHERE valor_area IN (1,2,3,4) e agora preciso fazer ao contrário WHERE (1,2,3,4) IN valor_area
Resolvi o #6 fazendo uma gambiarra muito grande com LIKE e acrescentando uma virgula antes e depois da string que buscava...
Exemplo
Antes estava assim 1,2,3,4 e ficou ,1,2,3,4,
Já na busca coloquei, ... WHERE area_atuacao LIKE ',".$area.",'
OBS: Ainda aguardo uma resposta, pois está que fiz foi uma gambiara feia e acredito que possa dar problema futuramente...
VALEW!!!
nunca usei STRAIGHT_JOIN, na verdade nem sei com ela funciona.. depois vou dar uma pesquisada rs
se a função acima estiver dando certo e só falta filtrar a area de atuação, é só colocar isso no ON()
ficaria assim:
SELECT advogados.id, advogados.nome, advogados.area_atuacao, advogados.email, advogados.status, areatuacao.id, areatuacao.titulo
FROM advogados
STRAIGHT_JOIN areatuacao ON areatuacao.id = advogados.area_atuacao AND (advogados.area_atuacao=1 OR advogados.area_atuacao=2 OR advogados.area_atuacao=3 OR advogados.area_atuacao=5)
ORDER BY advogados.id, areatuacao.titulo DESC
LIMIT 0 , 4
testa aí :D