gremio10 14 Denunciar post Postado Novembro 9, 2011 Fala galera, eu tenho minha query, tranquila, funcionando, só que eu quero fazer com que ele busque em duas tabelas, que não possuam nenhum tipo de inteligação. tipo: $sql = $this->select()->from( "my_table" )->where( "id = ?", 1 ); queria fazer com que ele busque em duas tabelas, mas na mesma variavel $sql... não sei se consegui me fazer claro... Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 9, 2011 Modifique o método from. $sql = $this->select()->from( array("m" => "my_table", "a" => "another_table") )->where( "m.id = ?", 1 )->where("a.id = ?", 1); O primeiro parâmetro do from é a relação de tabelas de onde pesquisar. O segundo parâmetro são as colunas a serem buscadas e o terceiro parâmetro é o nome do banco de dados. Caso tenha dúvidas, consulte a documentação, clicando aqui. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Novembro 9, 2011 Não sabia que poderia fazer essa modificação, obrigado pela dia Matias, vou testar isso, mas amanhã <_< .. assim que testar, dou o feedback Abraços Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Novembro 10, 2011 Cara, olha só meu problema... tenho essas duas tabelas: CREATE TABLE `medicamentos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ativo` int(1) NOT NULL, `cha_tipo` char(1) NOT NULL, `nome` varchar(255) NOT NULL, `txt_permalink` varchar(255) NOT NULL, `keywords` text NOT NULL, `imagem` varchar(255) NOT NULL, `definicao` text NOT NULL, `oque` text NOT NULL, `informe_aomedico` text NOT NULL, `como_usar` text NOT NULL, `outros_usos` text NOT NULL, `cuidados_especiais` text NOT NULL, `falhar_umadose` text NOT NULL, `interacoes` text NOT NULL, `efeitos_colaterais` text NOT NULL, `como_guardar` text NOT NULL, `emergencia_overdose` text NOT NULL, `marca_referencia` int(11) NOT NULL, `outra_marca` int(11) NOT NULL, `rank` int(11) NOT NULL, `cod_idioma` int(11) NOT NULL, `util_sim` int(11) NOT NULL, `util_nao` int(11) NOT NULL, `teste` varchar(255) NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `keywords` (`keywords`), FULLTEXT KEY `nome` (`nome`), FULLTEXT KEY `definicao` (`definicao`) ) ENGINE=MyISAM AUTO_INCREMENT=111 DEFAULT CHARSET=latin1 CREATE TABLE `medicamentos_lab` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `profissionais_id` int(11) DEFAULT NULL, `file_upload_id` int(11) DEFAULT NULL, `medicamentos_lab_tipo_id` int(11) DEFAULT NULL, `nome` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `nome` (`nome`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 e fiz essa query: SELECT `medicamentos`.*, `medicamentos_lab`.*, MATCH( medicamentos.keywords ) AGAINST( 'tylenol' WITH QUERY EXPANSION ) AS `relevance_key`, MATCH( medicamentos.nome ) AGAINST( 'tylenol' WITH QUERY EXPANSION ) AS `relevance_nome`, MATCH( medicamentos.definicao ) AGAINST( 'tylenol' WITH QUERY EXPANSION ) AS `relevance_definicao`, MATCH( medicamentos_lab.nome ) AGAINST( 'tylenol' IN BOOLEAN MODE ) AS `relevance_lab_nome` FROM `medicamentos`, `medicamentos_lab` WHERE (MATCH( medicamentos.keywords, medicamentos.nome, medicamentos.definicao, medicamentos_lab.nome ) AGAINST( 'tylenol' IN BOOLEAN MODE )) ORDER BY `relevance_lab_nome` DESC, `relevance_key` DESC, `relevance_nome` DESC, `relevance_definicao` DESC; Só que ele me retorna errado, por que ele lista o conteudo de medicamentos, mas na mesma linha do medicamentos_lab o lab seria nome de marcas e medicamentos, seria principios ativos, no exemplo uso tylenol, que seu principio ativo é paracetamol, então, se o usuário digitar paracetamol, tem de aparecer ele e o tylenol no resultado, sabe ? tanto se ele digitar tylenol, aparecer paracetamol também.. :ermm: dificil Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Novembro 10, 2011 Certo, mas aí foge do escopo do problema no Zend Framework e passa a ser um problema na montagem da query/modelagem do banco. Qual o banco de dados que você está usando, para movermos o tópico para lá? Depois, se a query estiver montada e a dificuldade for em transpor ela para o ZF, aí é só pedir que alguém move novamente o tópico para cá. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Novembro 10, 2011 Ok, estou usando mysql.. =) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 10, 2011 No campo medicamentos.keywords não deveria vir as chaves de pesquisa, algo do tipo medicamentos ------------ id nome keywords 01 tylenol tylenol paracetamol -- 02 generico paracetamol -- 03 aspirina aspirina aas acido acetil salicilico Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Novembro 10, 2011 é que o keywords, são palavras chaves para aquele nome, sabe ? tipo: nome keywords Paracetamol Acetaminofeno,Dor,Febre,Analgésico,Antipirético no meu medicamentos_lab eu coloco assim: id profissionais_id file_upload_id medicamentos_lab_tipo_id nome 1 1 1 1 Tylenol e eu tenho uma outra tabela que é a medicamentos_lab_principios_ativos que tem: CREATE TABLE `medicamentos_lab_principios_ativos` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `medicamentos_lab_id` int(11) DEFAULT NULL, `medicamentos_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 que aonde contem a listagem dos principios ativos Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 10, 2011 Então no keywords teria o que se quer pesquisar. Palavras x Medicamentos. Certo ? Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Novembro 11, 2011 Não exatamente, por que tylenol é uma marca, não um principio ativo, então eu precisaria diferenciar elas de uma e de outra, e um é cadastrado pelo admin, já as marcas, são cadastradas pelos laboratórios... por isso eu precisaria fazer essa diferenciação e buscar por campos sem nenhum tipo de ligação. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 11, 2011 Teria de criar uma outra coluna para esta string de buscas. Ou até uma 3ª tabela. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Novembro 11, 2011 Como assim ? como que seria essa 3ª tabela, para qual motivo eu criaria ela ? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites