Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

greyback

MYSQL - SELECT's

Mensagens Recomendadas

greyback    0
greyback

Boas!

Eu gostaria de fazer como posso fazer o seguinte...

Tenho várias tabelas, do género, tradição, comida, história, noticias, turismo, etc...

E queria fazer uma pesquisa, em que por exemplo se pesquisássemos, 'Lisboa' ele fosse a toda as tabelas, aos campos referidos no select verificar se existe a palavra lisboa...

SELECT codigo,descr,nome_loc FROM comer WHERE nome_loc LIKE '%lisboa%' and descr LIKE '%lisboa%'

SELECT codigo,titulo,descr FROM tradicao WHERE descr LIKE '%lisboa%' and titulo LIKE '%lisboa%'

E mais algumas tabelas...

Gostaria de saber como posso juntar todos num mesmo select em vez de tar a fazer um a um... o código fica mais pequeno e mais perceptível...

do genero (SELECT codigo,descr,nome_loc FROM comer WHERE nome_loc LIKE '%lisboa%' and descr LIKE '%lisboa%') AND (SELECT codigo,titulo,descr FROM tradicao WHERE descr LIKE '%lisboa%' and titulo LIKE '%lisboa%') AND ....

Cumps!

GreyBack

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Sem querer estar a dizer nenhuma baboseira, acho que não, porque não existem campos em comum nas tabelas para te gerar um resultado único.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheGlorious    0
TheGlorious

Tal como o softclean falou o mais correcto é colocares um campo comum em todas as tabelas, por exemplo "Cidade" e depois é só adicionares as cláusula WHERE.

Por exemplo:

SELECT * FROM tabela1, tabela2, tabela3 WHERE Cidade='Lisboa'

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
greyback    0
greyback

do genero

Tal como o softclean falou o mais correcto é colocares um campo comum em todas as tabelas, por exemplo "Cidade" e depois é só adicionares as cláusula WHERE.

Por exemplo:

SELECT * FROM tabela1, tabela2, tabela3 WHERE Cidade='Lisboa'

do genero...

select tabela1.codigo,tabela1.descr,tabela2.nome_loc FROM tabela1,tabela2 WHERE tabela2.nome_loc LIKE '%lisboa%' and tabela1.descr LIKE '%lisboa%'

assim dá?

é que os campos das tabelas são diferentes :X

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

É preferível fazeres vários SELECT's uma vez que não há relacionamento entre as tabelas...

Algo num ciclo por exemplo, tenta adaptar ao teu modelo:

$tabelas = array('tabela1', 'tabela2', '...');
$campos = array('a', 'b', 'z');

for ($i = 0; $i < count($tabelas); $i++) {
  mysql_query("select * from {$tabelas[$i]} where {$campos[$i]}='%Lisboa%'");

  echo "Resultados para a tabela {$tabelas[$i]}:";
  // saida de resultados
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vbtipo    0
vbtipo

Para isso basta fazer uma tabela bem feita senão não consegues obter todas as informações desejadas dela...

Ps: Aconselhava-te a elaborar melhor a tua base de dados.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade