Eu me deparei com um problema... Não sei se problema de estrutura do banco, ou se minha deficiencia em SQL (provável segunda opção)...
Tenho 3 tabelas, quero fazer o SELECT na tabela Estabelecimentos, trazer o ID, NOME e Descrição.
Mas na busca a pessoa pode filtrar todos os estabelecimentos de determinada área, ou filtrar por área e categoria. E ainda por cima, se ele somente fizer uma busca pelo nome trará o registro relativo, abaixo segue a estrutura básica das tabelas, tme mais campos, ams de primeira eu preciso desses campos da tabela Estabelecimentos. Fiz um SQL com JOIN puxando o id da categoria, depois um JOIN puxando o id da área, mas não deu muito certo. Depois tentei com o WHERE, e ambas as tentativas foram frustradas.. am inha dúvida é:
Tem como fazer esse SELECT, ou é necessário um campo "idArea" na tabela Estabelecimentos?
Segue a estrutura da tabela, logo após as 2 tentativas que fiz:
Estabelecimentos:
id
idCategoria
nome
desc
Categorias:
id
idArea
nome
Areas:
id
nome
----------------------
1ª Tentativa: JOIN
SELECT DISTINCT E.nome AS nome, E.descricao AS descricao, E.id AS id
FROM estabelecimentos E
JOIN categorias C ON C.id ='E.idCategoria'
JOIN areas A ON A.id ='C.idArea'
WHERE E.parceiro='1'
=======================
2ª Tentativa : WHERE
SELECT DISTINCT E.nome AS nome, E.descricao AS descricao, E.id AS id
FROM estabelecimentos E, areas A, categorias C
WHERE E.parceiro='1'
AND E.idCategoria='6'
AND C.idArea IN (SELECT idArea FROM categorias WHERE idArea='1')
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
Pergunta
Evandro Fontes
Fala galera, beleza?
Eu me deparei com um problema... Não sei se problema de estrutura do banco, ou se minha deficiencia em SQL (provável segunda opção)...
Tenho 3 tabelas, quero fazer o SELECT na tabela Estabelecimentos, trazer o ID, NOME e Descrição.
Mas na busca a pessoa pode filtrar todos os estabelecimentos de determinada área, ou filtrar por área e categoria. E ainda por cima, se ele somente fizer uma busca pelo nome trará o registro relativo, abaixo segue a estrutura básica das tabelas, tme mais campos, ams de primeira eu preciso desses campos da tabela Estabelecimentos. Fiz um SQL com JOIN puxando o id da categoria, depois um JOIN puxando o id da área, mas não deu muito certo. Depois tentei com o WHERE, e ambas as tentativas foram frustradas.. am inha dúvida é:
Tem como fazer esse SELECT, ou é necessário um campo "idArea" na tabela Estabelecimentos?
Segue a estrutura da tabela, logo após as 2 tentativas que fiz:
Estabelecimentos:
id
idCategoria
nome
desc
Categorias:
id
idArea
nome
Areas:
id
nome
----------------------
1ª Tentativa: JOIN
SELECT DISTINCT E.nome AS nome, E.descricao AS descricao, E.id AS id
FROM estabelecimentos E
JOIN categorias C ON C.id ='E.idCategoria'
JOIN areas A ON A.id ='C.idArea'
WHERE E.parceiro='1'
=======================
2ª Tentativa : WHERE
SELECT DISTINCT E.nome AS nome, E.descricao AS descricao, E.id AS id
FROM estabelecimentos E, areas A, categorias C
WHERE E.parceiro='1'
AND E.idCategoria='6'
AND C.idArea IN (SELECT idArea FROM categorias WHERE idArea='1')
AND E.nome LIKE '%teste%'
Algém tem alguma salvação ai p/ mim ?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados