Ir para conteúdo

POWERED BY:

Arquivado

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

kania

[Resolvido] Consulta em varias tabelas

Recommended Posts

Olá pessoal,

 

Montei o seguinte select:

 

SELECT cidades.nome_cidade
FROM cadastro_usuarios
INNER JOIN estados
ON cadastro_usuarios.estado = estados.id_estado
INNER JOIN cidades
ON cadastro_usuarios.cidade = cidades.id_cidade
AND estados.id_estado = cidades.id_estado
INNER JOIN sub_categorias_anunciantes
ON cadastro_usuarios.id_cadastro = sub_categorias_anunciantes.id_anunciante
WHERE estados.id_estado = 18
GROUP BY cidades.nome_cidade

Bom ele está funcionando certinho até certo ponto, ele pega cidades cujo o estado seja igual a 18 e que estas cidade estejam também cadastradas na tabela cadastro_usuários.

 

Bom o que eu não consegui fazer é o seguinte:

Na hora da busca eu faço o seguinte.

 

1° - Busco o tipo de serviço em sistema de autosujeste feito por este select:

SELECT sub_categorias.SubCategoria, sub_categorias_anunciantes.id_anunciante, cadastro_usuarios.id_cadastro, sub_categorias_anunciantes.id_sub_categoria
FROM cadastro_usuarios
INNER JOIN sub_categorias_anunciantes
ON cadastro_usuarios.id_cadastro = sub_categorias_anunciantes.id_anunciante
INNER JOIN sub_categorias
ON sub_categorias_anunciantes.id_sub_categoria = sub_categorias.IdSubCategoria
where sub_categorias.SubCategoria like '"&q&"%' Group By sub_categorias.SubCategoria LIMIT 0,20

2° - Já com o ID da categoria agora eu listo em uma combo todos o estados com este select:

SELECT sub_categorias.SubCategoria, estados.nome_estado, estados.id_estado
FROM cadastro_usuarios
INNER JOIN sub_categorias_anunciantes
ON cadastro_usuarios.id_cadastro = sub_categorias_anunciantes.id_anunciante
INNER JOIN estados
ON cadastro_usuarios.estado = estados.id_estado
INNER JOIN sub_categorias
ON sub_categorias_anunciantes.id_sub_categoria = sub_categorias.IdSubCategoria
WHERE sub_categorias.IdSubCategoria = '"&IdUf&"'"

3° - Agora preciso saber somente as cidades que sejam igual ao estado escolhido anteriormente porem também só pode aparecer as cidades que já tenham serviços cadastrados para elas, este select só consegui fazer até o ponto que está abaixo:

SELECT cidades.nome_cidade
FROM cadastro_usuarios
INNER JOIN estados
ON cadastro_usuarios.estado = estados.id_estado
INNER JOIN cidades
ON cadastro_usuarios.cidade = cidades.id_cidade
AND estados.id_estado = cidades.id_estado
INNER JOIN sub_categorias_anunciantes
ON cadastro_usuarios.id_cadastro = sub_categorias_anunciantes.id_anunciante
WHERE estados.id_estado = 18
GROUP BY cidades.nome_cidade

Ele não está trazendo somente as cidades que tenham serviços cadastrados para eles, como fazer isto? Da forma que eu montei ele traz todas as cidades referente ao estado ID 18.

 

Preciso fazer isto para não colocar na combo cidades que não tenham serviços, imagine o usuário ficar selecionando cidades uma a uma para saber qual realmente tem um serviço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, conseguir resolver a questão, se alguém vier a precisar de algo parecido fica ai o modelo do select

 

SELECT cidades.nome_cidade, estados.sgl_estado, sub_categorias.SubCategoria
FROM cidades INNER JOIN estados ON cidades.id_estado = estados.id_estado
INNER JOIN cadastro_usuarios ON cidades.id_cidade = cadastro_usuarios.cidade AND estados.id_estado = cadastro_usuarios.estado
INNER JOIN sub_categorias_anunciantes ON cadastro_usuarios.id_cadastro = sub_categorias_anunciantes.id_anunciante
INNER JOIN sub_categorias ON sub_categorias_anunciantes.id_sub_categoria = sub_categorias.IdSubCategoria
WHERE sub_categorias_anunciantes.id_sub_categoria = 724 AND cidades.id_estado = 18
GROUP BY cidades.nome_cidade

Lembrando que este select junta 5 tabelas diferentes, onde todas tem algum tipo de relacionamento entre elas

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.