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')
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