Umbus Posted February 21, 2012 at 12:01 AM Report Share #440514 Posted February 21, 2012 at 12:01 AM Boas, Imaginasse que tenho a tabela1 e tabela2 e quero encontrar a palavra "teste". Como posso fazer isso no mysql? Eu fiz isto mas não funciona: SELECT * FROM tabela1, tabela2 WHERE tabela1.nomeLIKE '%teste%' OR tabela1.estilo LIKE '%teste%' OR tabela2.trabalho LIKE '%teste%' OR tabela2.informacoes LIKE '%teste%' OR tabela2.contacto LIKE '%teste%' LIMIT 0 , 30 Eu sou eu e eu sou aquele que sou eu... Link to comment Share on other sites More sharing options...
mjamado Posted February 21, 2012 at 12:13 AM Report Share #440516 Posted February 21, 2012 at 12:13 AM Se não funciona, devia (desde que tenhas corrigido ali aquele espaço que falta). Agora, dá os resultados que queres? Provavelmente, não. O que estás a fazer é um produto das duas tabelas, isto é, vai-te multiplicar o número de resultados. Para encontrares registos (únicos) de uma e de outra, não tens hipótese: só com duas queries. "Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web. Link to comment Share on other sites More sharing options...
Umbus Posted February 21, 2012 at 12:15 AM Author Report Share #440517 Posted February 21, 2012 at 12:15 AM Exacto a caso que da 5 resultados lol, quando na realidade so existe 1 com a palavra que procuro... Como faço entao para que funcione? Eu sou eu e eu sou aquele que sou eu... Link to comment Share on other sites More sharing options...
djthyrax Posted February 21, 2012 at 12:27 AM Report Share #440518 Posted February 21, 2012 at 12:27 AM Tens que relacionar os registos entre as 2 tabelas. Imagina que tens tabela1.id que é chave primária e tens-la como chave estrangeira em tabela2 como tabela2.idAluno. Para fazeres a junção das tabelas fazes algo do género: SELECT * FROM tabela1, tabela2 WHERE tabela1.id = tabela2.idAluno Depois é só adicionares o resto das condições. Claro está, se não houver uma relação entre as 2 tabelas, tens que fazer duas queries separadas. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Umbus Posted February 21, 2012 at 12:53 AM Author Report Share #440519 Posted February 21, 2012 at 12:53 AM E depois como faço o restante da procura por exemplo da palavra "teste"? Eu sou eu e eu sou aquele que sou eu... Link to comment Share on other sites More sharing options...
mjamado Posted February 21, 2012 at 01:09 AM Report Share #440521 Posted February 21, 2012 at 01:09 AM Mas queres resultados relacionados, ou queres pesquisar resultados de uma e de outra tabela em separado? O que é que está no primeiro post que permite ao djthyrax tirar a conclusão que tirou, que eu não vejo? "Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web. Link to comment Share on other sites More sharing options...
Umbus Posted February 21, 2012 at 01:20 AM Author Report Share #440522 Posted February 21, 2012 at 01:20 AM E assim, as duas tabelas complementam-se. Dentro da tabela2 existe uma coluna que e "id_tab1" que contem o id a que corresponde a tabela1. O que pretendo e ficar com os dados das duas tabelas juntos. Ou seja imaginando que se existe a palavra "teste" na tabela1 ou na tabela2 aparece no array os dados dessa query. Eu sou eu e eu sou aquele que sou eu... Link to comment Share on other sites More sharing options...
KTachyon Posted February 21, 2012 at 08:55 AM Report Share #440528 Posted February 21, 2012 at 08:55 AM É exactamente da mesma forma que estás a fazer, só tens que adicionar a relação entre tabelas à query, tal como o djthyrax disse. Ou seja: SELECT * FROM tabela1, tabela2 WHERE tabela1.id = tabela2.id_tab1 AND (tabela1.nome LIKE '%teste%' OR tabela1.estilo LIKE '%teste%' OR tabela2.trabalho LIKE '%teste%' OR tabela2.informacoes LIKE '%teste%' OR tabela2.contacto LIKE '%teste%') Como as comparações são disjunções (e tu queres que pelo menos uma aconteça), tens que adicionar os parênteses. Caso contrário, a relação tabela1.id = tabela2.id_tab1 e a comparação tabela1.nome LIKE '%teste%' teriam que acontecer obrigatoriamente. “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 Link to comment Share on other sites More sharing options...
Umbus Posted February 21, 2012 at 02:28 PM Author Report Share #440551 Posted February 21, 2012 at 02:28 PM Funcionou. Muitíssimo obrigado KTachyon =) Eu sou eu e eu sou aquele que sou eu... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 21, 2012 at 02:41 PM Report Share #440556 Posted February 21, 2012 at 02:41 PM so para conhecimento, existe tambem a solução de joins SELECT * FROM tabela1 INNER JOIN tabela2 ON tabela1.id = tabela2.id_tab WHERE tabela1.nome LIKE '%teste%' OR tabela1.estilo LIKE '%teste%' OR tabela2.trabalho LIKE '%teste%' OR tabela2.informacoes LIKE '%teste%' OR tabela2.contacto LIKE '%teste%' IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now