Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Villa

[Resolvido] Juntar tabelas com INNER JOIN + SEQUÊNCIA NUMÉRICA

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!!

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.