KamiK4Z3 0 Denunciar post Postado Novembro 13, 2007 Estou fazendo um sistema de busca interna no meu site e esse sistema consulta em 5 tabelas diferentes. Antes eu tinha feito 5 SELECTs diferentes, mas preciso dividir o resultado por páginas e tal, por isso preciso de uma query só! Abaixo tem o que eu fiz ateh agora usando UNION, mas naum consegui resultado...ele dah erro na sintaxe, soh q segui a msm forma passada no manual do MySQL SELECT * FROM hotelaria WHERE hotelaria.hot_nome LIKE '%%$busca%%' OR hotelaria.hot_desc LIKE '%%$busca%%' OR hotelaria.hot_end LIKE '%% $busca%%' OR hotelaria.hot_tel LIKE '%%$busca%%' OR hotelaria.hot_segm LIKE '%%$busca%%' OR hotelaria.hot_link LIKE '%%$busca%%' OR hotelaria.hot_meta LIKE '%%$busca%%' UNION ALL SELECT * FROM gastronomia WHERE gastronomia.gas_nome LIKE '%%$busca%%' OR gastronomia.gas_desc LIKE '%%$busca%%' OR gastronomia.gas_end LIKE '%%$busca%%' OR gastronomia.gas_tel LIKE '%%$busca%%' OR gastronomia.gas_link LIKE '%%$busca%%' OR gastronomia.gas_meta LIKE '%%$busca%%' UNION ALL SELECT * FROM noticias WHERE not_titulo LIKE '%%$busca%%' OR not_chamada LIKE '%%$busca%%' OR not_conteudo LIKE '%%$busca%%' OR not_data LIKE '%%$busca%%' UNION ALL SELECT * FROM conteudo WHERE conteudo.cont_nome LIKE '%%$busca%%' OR conteudo.cont_desc LIKE '%%$busca%%' OR conteudo.cont_cham LIKE '%% $busca%%' OR conteudo.cont_link LIKE '%%$busca%%' OR conteudo.cont_seg LIKE '%%$busca%%' UNION ALL SELECT * FROM servicos WHERE servicos.serv_nome LIKE '%%$busca%%' OR servicos.serv_cat LIKE '%%$busca%%' OR servicos.serv_end LIKE '%%$busca%%' OR servicos.serv_tel LIKE '%%$busca%%' OR servicos.serv_link LIKE '%%$busca%%' OR servicos.serv_meta LIKE '%%$busca%%' Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Novembro 13, 2007 Bom, o UNION tem coisas não muito triviais que, se não for feito com atenção, dá pau mesmo, ainda mais quando vocêê utiliza SELECT * que é perigoso por vários motivos e não aconselho o uso, a menos que sua aplicação for usar todas as colunas retornadas...mesmo assim, se um novo campo for adicionado, sua aplicação poderá parar de funcionar normalmente. Bom. . .UNION pode ser usando se suas tabelas tiverem a mesma quantidade de campos e estes na mesma sequencia, terem os mesmo tipos de dados...o que acho de remota possibilidade, exemplo: Tabela A: CREATE TABLE A (id int, nome char(60)); Tabela B: CREATE TABLE B (id int, email char(100)); Podemos nesse caso fazer um UNION com SELECT *, mesmo que nome e email apareçam na mesma coluna e vira uma bagunça, mas o contexto é, os tipos de dados e a quantidade de colunas é a mesma. SELECT * FROM A UNION SELECT * FROM B; Tente alinhar isso na sua SELECT e volte a postar caso tenha dúvidas!! Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
KamiK4Z3 0 Denunciar post Postado Novembro 13, 2007 Bom, o UNION tem coisas não muito triviais que, se não for feito com atenção, dá pau mesmo, ainda mais quando vocêê utiliza SELECT * que é perigoso por vários motivos e não aconselho o uso, a menos que sua aplicação for usar todas as colunas retornadas...mesmo assim, se um novo campo for adicionado, sua aplicação poderá parar de funcionar normalmente. Bom. . .UNION pode ser usando se suas tabelas tiverem a mesma quantidade de campos e estes na mesma sequencia, terem os mesmo tipos de dados...o que acho de remota possibilidade, exemplo: Tabela A: CREATE TABLE A (id int, nome char(60)); Tabela B: CREATE TABLE B (id int, email char(100)); Podemos nesse caso fazer um UNION com SELECT *, mesmo que nome e email apareçam na mesma coluna e vira uma bagunça, mas o contexto é, os tipos de dados e a quantidade de colunas é a mesma. SELECT * FROM A UNION SELECT * FROM B; Tente alinhar isso na sua SELECT e volte a postar caso tenha dúvidas!! Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Entendi.... como eu poderia fazer essa minha busca? INNER JOIN será q resolve? Tô quebrando a cabeça desde ontem e não consigo resolver!!! Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Novembro 13, 2007 Essas tabelas estão relacionadas, ou seja, existem campos PK e FK ligando as mesmas? ... Compartilhar este post Link para o post Compartilhar em outros sites
KamiK4Z3 0 Denunciar post Postado Novembro 13, 2007 Essas tabelas estão relacionadas, ou seja, existem campos PK e FK ligando as mesmas? ... Então kra... elas não tem nenhum vinculo...tanto eh q cada tabela tem um quantidade X de colunas...tah ai a explicação do UNION naum ter funcionado! Cada uma faz parte de um segmento do site! Eu tinha feito 5 SELECTs diferentes, um pra cada query, soh q preciso fazer a paginação dos resultados e com 5 querys diferentes a paginação fika mais complicada ainda! Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Novembro 13, 2007 é, já que você está trabalhando na implementação de um sistema de busca, diante dessa modelagem não haverá outra forma possível do que fazer os SELECTs separados para cada categoria de busca, por exemplo: Hotelaria(5 resultados): resultado 1 resultado 2 resultado 3 resultado 4 resultado 5 Serviços(2 resultados): resultado 1 resultado 2 entendeu?? Abração camarada!! http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif Compartilhar este post Link para o post Compartilhar em outros sites
KamiK4Z3 0 Denunciar post Postado Novembro 13, 2007 é, já que você está trabalhando na implementação de um sistema de busca, diante dessa modelagem não haverá outra forma possível do que fazer os SELECTs separados para cada categoria de busca, por exemplo: Hotelaria(5 resultados): resultado 1 resultado 2 resultado 3 resultado 4 resultado 5 Serviços(2 resultados): resultado 1 resultado 2 entendeu?? Abração camarada!! http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif Entendi....acho q estou conseguindo aki!!! toma q dê certo!! abraço!!! brigadão velho! Compartilhar este post Link para o post Compartilhar em outros sites