Jump to content
EToS

Query 3 tabelas Avançado

Recommended Posts

EToS

Boa tarde pessoal,

Preciso de fazer uma query do genero

Select * from 3 tabelas(tabela passaros, casas, utensilios) where nome=$nome;

Ou seja, preciso na mesma query buscar valores de 3 tabelas diferentes.

Cumps.

Share this post


Link to post
Share on other sites
KTachyon

Tens a certeza?

SELECT * FROM passaros, casas, utensitios
WHERE
passaros.nome = $nome OR
casas.nome = $nome OR 
utensilios.nome = $nome

Acredito que não vás gostar muito do resultado.

A não ser que o que queiras mesmo é ir buscar os valores da relação entre tabelas:

SELECT * FROM passaros, casas, utensitios
WHERE
passaros.rel_casa = casas.id AND
casas.rel_utensilio = utensilios.id AND
utensilios.nome = $nome


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Rechousa

Olá,

KTachyon, isto não vai funcionar, porque vai resultar no produto cartesiano das três tabelas.

SELECT * FROM passaros, casas, utensitios
WHERE
passaros.nome = $nome OR
casas.nome = $nome OR 
utensilios.nome = $nome

A meu ver, a solução passa por usar UNION's:

SELECT nome FROM passaros WHERE nome = $nome
UNION -- Ou eventualmente UNION ALL
SELECT nome FROM casas WHERE nome = $nome
UNION -- Ou eventualmente UNION ALL
SELECT nome FROM utensitios WHERE nome = $nome


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
bioshock

Se é para fazer relações entre campos de diferentes tabelas, uma das soluções também passa por:

SELECT * FROM Passaros
INNER JOIN Casas
ON Passaros.IDCasas = Casas.ID

Edit: A solução que o @KTachyon apresentou pode ser viável, mas será necessário parêntesis para um maior rigor.

Share this post


Link to post
Share on other sites
KTachyon

KTachyon, isto não vai funcionar, porque vai resultar no produto cartesiano das três tabelas.

Sim, daí que eu tenha dito que ele não iria gostar do resultado :P

O problema é que parece que ele mencionou que queria ir buscar todo o conteúdo das 3 tabelas. Mas esperemos que ele nos venha esclarecer as nossas dúvidas :)


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Rechousa

Pois, alias... Eu aponto dois cenários possíveis, eventualmente até outros:

1. Ele quer pesquisar um texto em várias tabelas (eventualmente em vários campos), como se se tratasse de uma pesquisa global (pesquisar em toda a base de dados, por exemplo) - eu assumi que seria este cenário;

2. Quer pesquisar o campo nome numa tabela (tal como apontaste) e em que as outras duas tabelas estariam relacionadas...

Vamos deixar o EToS esclarecer isso :P


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
EToS

O que quero mesmo é selecionar tres campos da bd,

Exemplo

nome passaro

nome casa

imagem casa

Já consegui isso com a dica do Rechousa e desde já muito obrigado.

Agora o meu problema  é apresentar os resultados.

Visto que vou ter 9 campos pois vou retirar esse campos que mencionei em cima de 3 tabelas diferente.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.